1樓:風若遠去何人留
這個就有點意思了。
想搞清楚你的問題,需要理解指標的本質,它就是個地址。
第一個int *p[1]; 其實這個定義,本質上和int *p沒什麼區別,都是開了四個位元組的空間,用來存一個整型指標的值。
但是和下面卻出現了不同。
這個是因為&p和p代表的值不同。
對於int *p[1];
p本身就是這個陣列的首地址,而&p其實也還是這個地址。 你可以列印p和&p的值來看一下。
這樣 你在scanf的時候,用&p, 在printf的時候用p, 其實用的都是陣列的地址,於是借用了四個位元組的空間,輸入和輸出的字串。
而對於int *p; 分配了四個位元組,這四個位元組的起始地址是&p
於是用&p來輸入字串 用在scanf裡面是正常的
但是p不是分配的地址值,而是指標p指向的地址值,那四個位元組中存的值。
所以如果要正確列印,可以printf("%s",&p); 這樣就可以了。
2樓:匿名使用者
這個**是錯的,在vc++6.0環境下是無法通過編譯的。
你補充的**有重大問題,如 int *p[1]; scanf("%s",&p);
1、int *p[1]; // 請解釋與 int *p;的區別。
2、既然 p 是 int *,那麼 &p是什麼?
3、scanf("%s",&p); // 能通過編譯,但你讀取的內容放哪兒呢?
char str的問題,char str 7 string 這樣賦值有問題,為什麼不對?
怎麼和二進位制相關了呢,二進位制只是一種計數方式呀,程式設計的時候當然用我們熟悉的十進位制了,用二進位制太麻煩了吧。二進位制是機器內部的表現形式,我們不必去關心它,像 long表示整數,但整數如何表示呢?如 10,用二進位制表示是0000 0000 0000 0000 0000 0000 0000 ...
問關於c語言指標的問題,問一個關於C語言指標的問題
常玉標 cannot convert from const int to double 編譯器 會出現這樣的錯誤.應為不能把const int 賦值給 double 型別的變數.希望你能懂 首先我鄙視下樓上的回答,答非所問。你這肯定錯誤的啊,首先 double p 是定義了一個指標變數p,p只能存放...
關於結構體指標問題,還有函式指標作為結構體成員的問題
雪豹出擊 int changevar int 你少些了個e這是一個函式指標,這個changevar指標指向一個這樣的函式 這個函式有一個int型引數,返回值也是int.所以if fb info.changevar 的意思就是判斷結構體fb info中的changevar是否為空,等同於if fb i...