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都是什麼。再幫你看 這個問題有多種可能,不一而足...