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