在c語言中用二級指標指向陣列變數名)的值為什麼與陣列名

2021-08-09 10:14:46 字數 1458 閱讀 9237

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