1樓:匿名使用者
因為你這樣寫是不對的;
你沒有正確理解一維陣列名(例如:char buf[10];)、二維陣列名(例如:char buf1[10][10];)、二級指標(例如:
char **myp;)、陣列指標(例如:char (*myp1)[10])、指標陣列(例如:char *p1[10])的真正含義;
你如果想指向一維陣列,你需要用陣列指標,在你這個例子裡,正確寫法如下:
char *p = "abcdefghjklmn";
char buf[10] = ;
//char **myp = &buf; //這個是不對的char (*myp1)[10] = &buf;
printf("*myp1:%d\n", *myp1);
printf("buf:%d\n", buf);
個人理解是在做函式引數時:一維陣列名相當於一個一級指標,二維陣列名相當於一個陣列指標,指標陣列名相當於二級指標,希望可以幫到你。
2樓:小草莓
對不起我學的是c++
在c語言中用二級指標指向一維陣列,為什麼「*變數名」與陣列名的值不一樣
3樓:風若遠去何人留
二級指標不能只想一維陣列取地址.
對於char buf[10];
&buf是陣列指標 char (*p)[10] 型別和char **不匹配. 所以會出錯.
c語言裡面陣列與指標的問題,為什麼 陣列名 與 &陣列名輸出是一個值,如圖所示
4樓:金色潛鳥
宣告裡定義了 int a; 所以 a 是一維陣列語句裡, a 是 一維陣列 的名字,所以它代回表 a 陣列 的首地址。答
(如果 宣告 是 int a; 是簡單 變數,則 語句裡 a 表示 變數 a 的 值)
語句裡,&a 是 求 a 的地址。 對於陣列a,它等於 &a[0] 或 (a+0), 也就等於 a
(如果 宣告 是 int a; 是簡單 變數,則 語句裡 &a 表示 求變數 a 的 地址)
5樓:二笨喵
陣列名代表著陣列的首地址,即&a[0]
建議樓主好好看以下書,等到二維陣列和指標時會更亂
為什麼c語言中二維陣列的陣列名a和*a表示的是同一個值?
6樓:匿名使用者
當定義二維陣列a[m][n]時,陣列名可以認為是二維指標,其指向二維陣列的首地址。
於是a的值就是首地址的值。
而*a,就是a[0],a[0]是第一行的標記,代表第一行的首地址。
在二維陣列中,所有元素都是緊密排列的,這樣整個陣列的首地址,第一行的首地址,和第一個元素的首地址,即a, a[0], &a[0][0] 都是相同的。
於是a和*a的值是相同的。
c語言中如何讓指標指向已知地址,C語言中,如何讓指標指向一個已知地址
必須轉換型別,你的第二條是正確的。第一條編譯不通過的是錯誤的,因為他只是一個16進位制的數,而p是指標,是不能賦值的。也就是第一條賦值語句是將一個整數賦值給指標,肯定不行的。若是 0 是已經資料型別 是 t 那麼t p t unsigned long 0 若是在未知道的情況,可能崩潰 如果是整形 i...
二級c語言fun函式,二級C語言fun函式
fun函式 c語言中,fun函式是用呼叫主函式的。它是指用fun來定義一個函式或是方法,這樣在引用時可以用fun表示。比如fun int x,y fun int x,y 有上面的出現,必然在主函式裡有調它,fun沒有其它意思,只是在調時用到這個單詞,上面的意思是呼叫主函式中的數值。注意,c 語言標準...
c語言二級題目求解,C語言二級題目求解
要理解這個,首先要知道陣列和指標的一些關係。在記憶體中,陣列使用一塊連續的記憶體區域,陣列名即是指向陣列第一個元素的指標。首先,我們來看第一段 main函式中定義了一個10個元素的整數陣列,分別賦了初值。sum函式接受一個整數型指標,在呼叫sum函式的時候,取出了陣列第3個元素的地址,傳進sum中,...