C 中指標的問題,C 中指標的一個問題

時間 2021-05-05 18:56:51

1樓:匿名使用者

貌似是微軟的一個面試還是筆試題吧?以前看到過的。

此時如果分別輸出s.p 和p[1],輸出的都是s的地址。

關鍵是要理解指標是什麼,就是一個儲存地址的變數。

最後一句賦值是非法的,因為對地址0x1寫操作,訪問了非法記憶體。

2樓:

首先s.p代表著結構體在新建立的時候的一個地址,其中s.p就是訪問s的成員指標*p

而咋main函式裡面*p又是指向結構體i的指標,所以我們知道,mian所建立的p的地址就是

結構體i的地址啦。

而s.p=p就是把i的地址放到結構體的p裡面。

而s.p[1]就是結構體p中的第二個int型元素

3樓:緗虞幬

struct s

;void main( void )

4樓:匿名使用者

s.p[0] = 2;這應該是錯誤的。。。

5樓:匿名使用者

因為s.p存的是s.i的地址,s.

p[1]為s.p,當s.p[1]=1時,s.

p此時存放的是1了,而不是地址s.i,故在s.p[0] = 2時出錯.

此時相當於s.p=ox00000001;地址ox0000001 = 2;當然就出錯了

如果語句s.p[0] =2 先於s.p[1]=1則程式就不會出錯.此時語句相當於s.i=2;s.p=1;

6樓:陸美富

首先。 s s;這樣的定義結構體的變數是不合法的。應為:struct s s;

7樓:依賴

s.p代表著 結構體s的地址 p[1]帶表著s.p也是s的地址

因為結構體的第一個變數的地址就是結構體的地址

你最後那2句 就有點無厘頭了。。。。

8樓:

p[0],p[1]怎麼意思,沒有任何意義。

關於c 中指標變數的問題,C 中關於指標的一些問題

int i point 1000 這條語句的含義也就是把1000賦值給i point變數自己!即 把1000當作地址值,賦值給i point變數 按理論,這裡不會出現語法上的錯誤而出現的應該是執行結果的錯誤!同意你的看法 但是有的編譯器可能會做這種檢查,對有這種直接給指標變數賦值常數進行錯誤報警或警...

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

計算天下 你這樣想說明你還沒有真正理解記憶體和指標。int a 表示編譯器隨機取出一個空閒的地址分配給a,不妨設為00000000,長度為sizeof int 不同編譯器可能不同。int p 也表示隨機取出一個空閒的地址分配給p,不妨設為000000f0,長度一般為4個位元組,則這四個位元組現在儲存...

關於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...