關於C語言指標問題,C語言指標的賦值問題

時間 2021-10-20 12:55:37

1樓:飛翔的蠍子大叔

關於int *p1=123這個問題我看了很多資料,在這裡我發表一點看法,該問題非常好,這是c語言需要規範的地方。int *p1=123 是非法操作,指標表示地址,地址=123???我是沒有見過這種操作。

地址一般用二進位制、八進位制、十六進位制表示,123表示地址根本就是扯淡!

這個語句的目的就是給指標賦值,正確的方式應該為:

int a=123, *p1;

p1=&a;

執行一下就明白了:

#include

void main()

2樓:匿名使用者

我給樓主一個解釋,希望對樓主有幫助。有不懂的可以繼續追問哦首先得從你的定義開始

樓主要區別

int *p=123;和int *p;*p=123;

前者是定義一個指標變數,它指向一個地址123,後者是定義一個指標變數,再在這個指標指向的地址裡賦予123這個值。

所以兩個123是不同含義的。一個代表地址,一個代表數值。

所以最好輸出的時候,是把p1指向的地址和p2指向的地址的值輸出來了。

3樓:

p1是指標沒錯,但是地址也是一個值 ,你把它%d整型輸出,所以輸出123

4樓:我有兩把刷子誰要

*p1 = 123 表示把123當做地址賦給了指標變數,故所得的值一樣

5樓:匿名使用者

main()

{ int a=123;

int *p1,*p2;

*pi = 123;

p2=&a;

printf("%d,%d",p1,*p2);

c語言指標的賦值問題

6樓:大野瘦子

指標在用要注意初始化,例如:

int *p;

p為指標,地址是未知的,如果直接賦值

*p=a;這樣編譯可以通過,但是會產生警告,p的地址是隨機分配的,這樣對未知的地址賦值很危險,可能會覆蓋掉某些重要資料,所以避免這種危險,在定義指標時注意初始化,也就是賦值。

可以int *p=&a;

或者int *p;

p=&a;

然後再對p進行操作

有錯。注意大小寫,還有

int a=9;

int *p;

p=&a;//這個是指標指向a

*p=8;

這樣就對了。

指標的賦值

int *p;

int a;

int b[1];

p = &a;

p = b;

指標的賦值,「=」的左運算元能夠是*p,也能夠是p。

當「=」的左運算元是*p時,改變的是p所指向的地址存放的資料;

當「=」的左運算元是p時,改變的是p所指向的地址。

陣列的變數名b表示該陣列的首地址,因此p=b;也是正確的

同型別的指標賦值:

int val1 = 18,val2 = 19;

int *p1,*p2;

p1 = &val1;

p2 = &val2;

p1 = p2;   //注意啦,p1指向了val2,而沒有指向val1

備註:字串與指標的初始化和賦值

初始化:

char *cp = "abcdefg"; //這個初始化過程,是將指標cp指向字串的首地址,而並非傳遞字串的值。由於,在c語言裡面,沒有總體處理一個字串的機制

賦值:cp = "abcdefg";

*cp=」abcdefg」 ;//錯誤!字串常量傳遞的是它的首地址,不能夠通過*cp改動該字串的值,由於該字串為常量,而它僅僅是簡單的將指標指向該字串常量。

7樓:林聲飄揚

有錯注意:用指標變數前,必須對指標變數賦值如:int i, *p1;

p1=&i;

再如:int a, b;

int *p1, *p2;

*p1=10; *p2=100;

但指標變數未賦值,即指標指向未知地址,這樣是錯誤的因此:絕對不能對未賦值的指標變數作「指向」運算。

int a=9,b;

int *p=&b;//必須加上這一句

*p=a;

*p=8;

這樣就不會產生錯誤

8樓:匿名使用者

注意大小寫!還有

int a=9;

int *p;

p=&a;//這個是指標指向a

*p=8;

這樣就對了。

9樓:七先生是遊戲鬼才

這個還是比較複雜的,你可以學習一下

10樓:匿名使用者

p=&a//把a的地址給指標p

11樓:匿名使用者

語法上沒錯,但可能出現警告,破壞程式其他資料

12樓:渾濃強浩然

p就是一個指標,他指向一個地址,而&p就是p剛才所指向的具體地址,*p是p指向地址裡面的東西。也就是值。*p=&a的意思是把a的地址給了*p,這樣的話p就指向

(指向a的地址)的地址。對指標賦值必須是int*p=null;或者int

*p;p=null。

關於C語言指標自增運算的問題,c語言中指標可不可以用在自增自減運算子中

搗蒜大師 這寫操作等價 p p 都是p加,然後 這些操作等價 p p p 相當於先 了,然後p再 include main p 指向2 printf d n p 2 p p 1 p指向3 printf d n p p指向4,再 4 p p 1 p指向5 printf d n p 5,p指向6 p p...

關於C語言指標的指標的疑問,關於C語言的指標問題 指標的地址 1問題

month是指標陣列,每個元素都是一個char型指標,指向一個字串的首地址 p是二級指標,p month,p指向month陣列的首地址,也就是 january 的首地址的地址,p的值就是 january 的首地址,用 s 的格式輸出,就是字串 january 然後p month i,month是陣列...

c語言指標的問題,一個c語言指標的問題

劉文正粉絲 首先說一下,你這不是c語言,是c 問題一 這個就是問題二的內容了.p指向的是a,而p是一個地址.c語言輸出一個字串不是靠一個實際的資料輸出的,而是靠著實際資料的首地址輸出的.問題二 char ch aadsf 你要知道,一個字串的值是這個臨時值的首地址,也就是a的地址.而你又把這個地址給...