c語言指標問題,C語言指標問題

2021-05-29 02:17:16 字數 3473 閱讀 3077

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,這是一個函式指標型別,這個函式指標型別是返回值...