1樓:51cto學院
記憶體對齊的緣故。
p_buf 作為一個指標,
它的值是記憶體的某個位元組的地址。
如果想要把 p_buf 強制轉換版
成一個 unsigned int*型別的指權針,需要滿足一個必要條件,就是 p_buf 的值必須能夠被4整除。(之所以是4,是因為 unsigned int 是要佔4個位元組的)。
c語言結構體指標問題
2樓:
你指標有沒有移動,輸出3次都是同一個節點,當然是一樣的了。
可以這版樣權
改試試:
p = freee ;
for(i=0;ipn,p->pfn);
p = p ->next ;}
3樓:兄弟連教育北京總校
比如bai
struct lnode*linklist;
lnode是結構
變數du名;
linklist就是zhi指標,指向該dao結構體的指標。
**用內部應答
為:結構變數名.成員名
4樓:_葉子妞妞
void main()
}你的連結串列一
bai直沒du有移動,列印出
zhi來的dao 始終是
回第一個節點的答。
5樓:
沒看全部,就最後那個迴圈,寫的printf("%d %d \n",freee->pn,freee->pfn);就是反覆輸出,freee->pn和freee->pfn),當然是一樣的。你意圖要幹啥?說清楚了才好改!
c語言的問題,指標陣列
6樓:匿名使用者
改變不了,字串常量是改不了的,你可以試試char *p = "aaaaa";
p[1] = b;這樣是改不了的
只能定義二維陣列才可以改
char p[3][100] = ; 這樣才可以改,不要問為什麼,字串常量就是不能改
7樓:千鋒教育
直接讓指標指向另一個字串即可
p[0]="aaaa";
8樓:橙
這樣定義指標指向的字串是無法修改的。
c語言陣列與指標相關問題,謝謝
9樓:一顆程式猿
*p[1] 相當於 p[1][0], 值為4, 加上1就是5了
10樓:千鋒教育
注意操作符的優先順序,第三個*p[1]+1中最高,所以是p[1]即為34f9a8,再是*指標取內容操作符,即取出地址34f9a8的內容即為4,再+1所以得到5
c語言這個f函式再指標
11樓:匿名使用者
28f為傳值呼叫。所以f中的修改不影響main中變數的值。輸出的還是原始值。即
4,3,5
選d29
a=4b=**=&a
q=&b
w=q=&b
q=null
a *q=0 由於q已經賦值為null, 再對*q賦值會引起程式崩潰。 這個不對
b w=p 指標間賦值,正確。
c *p=a 也就是a=a 正確。
d *p=*w 也就是a=b 正確。選a
12樓:兄弟連教育北京總校
c語言中, 函式
名也稱為函式的指標,所以c語言中函式名就是一
個指標。
1,例如:
showmenu是一個函式名,可以看到他的值是一個地址。
&showmenu是對函式取地址,指向和showmenu同樣的地址。
可以看出,showmenu是佔用一個位元組的,而作為指標&showmenu卻佔用四個位元組。
所以,函式名佔用空間的。
2,函式指標
指向函式的指標包含了函式的地址,可以通過它來呼叫函式。宣告格式如下:
型別說明符 (*函式名)(引數)
其實這裡不能稱為函式名,應該叫做指標的變數名。這個特殊的指標指向一個返回整型值的函式。指標的宣告筆削和它指向函式的宣告保持一致。
指標名和指標運算子外面的括號改變了預設的運算子優先順序。如果沒有圓括號,就變成了一個返回整型指標的函式的原型宣告。
例如:void (*fptr)();
把函式的地址賦值給函式指標,可以採用下面兩種形式:
取地址運算子&不是必需的,因為單單一個函式識別符號就標號表示了它的地址,如果是函式呼叫,還必須包含一個圓括號括起來的參數列。可以採用如下兩種方式來通過指標呼叫函式:
x=(*fptr)(); x=fptr();
第二種格式看上去和函式呼叫無異。但是有些程式設計師傾向於使用第一種格式,因為它明確指出是通過指標而非函式名來呼叫函式的。下面舉一個例子:
void (*funcp)(); void filefunc(),editfunc();
main() void filefunc()
void editfunc()
程式輸出為:
filefunc editfunc
13樓:
28) f的呼叫並不會改變abc的值,所以還是原值4,3,5 選d
29)q為null,不能取內容,所以*q=0是錯誤的,選a
c語言指標陣列
14樓:千鋒教育
p是int型別指標,指向陣列a的第1個元素即一個一維的陣列首地址所以p[1]相當於a[0][1]所以printf("%d\n",p[1]);
輸出2 。 int **pp =pa 是宣告瞭一個指向pa的指標,而pa又是指向a首地址的int型別指標。pa指向的是a的第一維,pa[0] = a[0] ,pp[2][1]相當於a[2][1]而a陣列的[2]中只初始化了[2][0]位置的7,那[2][1]位置就是預設的值0,所以printf("%d\n",pp[2][1]);輸出0
15樓:匿名使用者
void main()
,,};
int *pa[3]=;
int *p=a[0];
int **pp=pa; //這句什麼意思??//定義了指向指標的指標變數
printf("%d\n",*a[1]);
printf("%d\n",*(*(a+1)+1));
printf("%d\n",*pa[1]);
printf("%d\n",p[1]); //為什麼輸出為2 ???//這裡應該是輸出了一個地址
printf("%d\n",pp[2][1]);} // pp不是地址嗎,不加* 嗎?//指標指向陣列的首地址之後是可以當陣列名用的。
關於C語言指標問題,求大神,C語言指標的問題,求大神!!
第一個函式的兩個指標是區域性變數,函式完了就銷燬了,換不換都一樣,第二個是直接操作指標指向的地方 記憶體單元 也就是直接操作變數。不恰當的比方,好比停車,有個圖紙記錄了每個車位停的什麼車,第一個就相當於另外拿了個圖紙畫了一下想要的位置,原來的圖沒變,函式結束後來的圖被扔了,原來的圖保留著,實際的車並...
C語言指標問題
你那是在swap內部交換了x,y,函式返回後,在swap內的改變不影響main函式中的x,y 如果改成下面的方式,或許可以。void swap int x,int y 第一樓的引數引用,只適用於c 不適用於c,這有差異的。void swap int x,int y 這隻交換了形參 x,y 的指標值,...
c語言(指標問題)
typedef struct statestruct ss 定義了一個新的型別,這個型別是個結構體,型別名是ss 下面宣告一個ss型別的變數ss s s就是一個ss型別的變數void funcptr void ptr 是一個型別名,型別是funcptr,這是一個函式指標型別,這個函式指標型別是返回值...