c語言指標問題,為什麼 p 不對 而 p) 100 對

2025-07-15 20:25:13 字數 3083 閱讀 6740

1樓:時歡悅

int *p表示指向整數型的指標,而int (*p)[100]表示指向乙個整數型陣列的指標。

前面是一組指標,後面可以理解為二組指,可以換成int **p是可以的。

c語言指標問題,這個為什麼不對

2樓:

a->next賦值太早,這個時候p還沒有初始化,值是錯誤的。

跟後面那換個位置就可以了。

p=(linklist)malloc(sizeof(lnode));

a->next=p;

關於c語言指標,為什麼不能寫int *p = 100;

3樓:

=號左右型別不匹配!int *p宣告的p是int *型指標,而常數100預設的是int型,因=號兩邊型別不同而錯。寫成int *p=(int *)100;就可以了,即把100強制為int *型……

4樓:網友

你先分開看,int *p 宣告瞭乙個叫做p的指標,此時p不知道指向何方(未初始化)之後你將乙個數值給了指標p,就是把100複製到p所指向的內容(此時p是未初始化的,就會出現未定義的情況)

c語言指標問題:在定義指標時*p=a和p=a有區別嗎?

5樓:

*p=a

是p所指向位址的內容是a(比如乙個數,或字元)p=a是p指向a(比如0x0001)這個位址囧了。問題看漏了。上面那位兄弟是對的。=_=

6樓:

在定義指標時,指標變數名前的*號是必須的,不能少,區別於普通變數, 說明當前變數是指標變數,而不是普通的變數。

對於你的問題,我舉例說明:

情形一:int a[5]=;

int *p=a;//這是在定義指標變數p的同時就直接給它初始化,即把陣列a的首位址賦給它。

情形二:int a[5]=;

int *p;//宣告指標變數p

p = a;

這裡的話是先宣告指標p,然後再對它初始話,等價於情形一,只是分開寫法而已。

7樓:lo廣

我覺得mcs51園地回答得有道理,比如*(a+1)=*(p+1)也論證了所說的a=p,而*p,你可以隨意賦值進去,比如*p=1,*p=3等等,看一些程式還是有區別的,真理還是屬於少數人啊。

關於c語言指標變數*p++ 、*(p++)、(*p)++的區別

8樓:匿名使用者

1. printf中表示式的計算是右結合的,即從右向左運算;但輸出還是從左向右。

2. 第乙個回printf,先取q所是單元的值顯示,即答為2,再對q++,即q所指單元位址後移乙個單元,這裡無意義;然後再對p指單元后自增,先輸出2。「*運算子的優先順序高於「++運算子。

3. 第二個printf,都是對p和q所指單元的值進行操作,(*q)++先輸出a的值2,再將其值加1變為3;再將p所指單元的內容a的值輸出3

9樓:網友

首先搞明白一點來,printf語句中表源達式的執行順序是bai

從右向左的,並du且對於zhi*(q++)首先進行dao解引用操作,再自增,即*q, q=q+1;所以說第乙個printf的輸出為2 2

對於第二個printf,首先執行(*q)++再執行*p++,對於(*q)++可以轉化為先執行(*q),即輸出它的值,再執行(*q)=(*q)+1,最後輸出*p,所以結果為3 2

10樓:網友

*p++ 由於++和*同優級,是自右向左的結合方向*(p++)因此等價於*(p++)他們的作用是得到p指向的變數值(*p),然後p +1=》p

q)++是先取p指向的變數值,然後其值再加一;

11樓:樂酷科技

*p++就等於*(p++)p自加 先算出當前位址的值*p 然後指向下個位址。

p)++是取出位址裡的值 這個值自加 p還是指向原來的位址。

12樓:窗欞間的月光

對於第二條printf語句的列印結果我表示懷疑,我覺得答案應該還是 2 2,而不應該是3 2

c語言二級指標中二級指標p,*p是位址還是值,為什麼有的時候就是值而不是位址

13樓:網友

對於一級指標而言,*p是取值,對於二級指標而言,*p是取位址,但是位址又是無符整形資料,所以在二級指標中你把*p當值來用的話,編譯不報錯,但是不合規定。

14樓:豎子求明

這個問題也是困擾的,我到現在都有點亂。

p是指標,有就是位址。

p是指標向的值。

對於數值型的,這樣理解沒錯。

不過對於字元等其他型別有點怪,舉個例子:

char str=「abc」,*p;

p=&str;

輸出*p 結果是a

輸出p 結果是abc。

15樓:966曹長

p是指向指標的指標,對p取值當然還是個指標。

c語言中,指標*p[i]與p[i]有什麼卻別?分別代表什麼意思?

16樓:網友

若果我還沒記錯的話:

你的問題:你這裡問的是指標。

p[i]:陣列p的[i]這個地方放的值。

p[i]:陣列p的[i]這個地方放的值(這當做乙個位址)的值,即p[i]這個地方放了乙個位址(相當於另外乙個p[i]),然後用*讀取他所代表的值。--即我所說的:

陣列p的[i]這個地方放的值(當做乙個位址)的值。

17樓:某李某

*p[i]指的是裡面的值。

p[i]子的是位址,也就是裡面的值所在的位址。

c語言中指標與字串 *p="china" p="china"兩者去什麼區別

18樓:逍遙俠

你的第二個是不正確的,c語言不存在字串這個資料型別,而是用字元陣列來存放字串。

p="china"是將字串"china"的首位址賦予指標變數p

c問題為什麼不對

這是隨機數的重複問題。因為計算機cpu的運算速率比較快。而在for迴圈中迴圈十次,之間取random基本上是一瞬間完成的。random基本不會改變。關於隨機數的重複問題。可以用一些方法降低重複機率的,但你這個隨機的範圍是0 1000,範圍夠大,只需要在加上一句 for int i 0 i 10 i ...

C語言指標P1表示陣列A1指標的指標求解釋

你的定義應該大概是這樣吧,舉個例子 a 3 3 int p a 所以 p就相當於 a 0 0 畫了一幅內圖,你可以看一下 指標 容是一個雙重指標,是指向指標的指標 c中指標bai是指標,陣列是陣列,兩個du 沒有必然聯絡。zhi a i j 等價於daoa i j 說法不準確,應是 a i j 的值...

c語言問題,為什麼會輸出負數,C語言問題,輸出結果總是負數,求教

在你的switch語句最後都加一個default 看一下switch d switch u 如果出現error這行,說明你的fflush 沒有起作用,改正方法是在scanf 函式後,加一個getchar 如果沒有出現,把你的輸入資訊粘出來,即x d u都是什麼。再幫你看 這個問題有多種可能,不一而足...