1樓:匿名使用者
因為陣列的首地址也就是陣列名,你的陣列名為a,則 * 意思是取內容,*a就是 a地址的內容
a地址又因為是首地址和a[0]一樣,所以可以說*a=a[0]
望樓主採納
2樓:春雨
首先a是一個地址,來它指自向的是陣列的首地址。*a可以運算元組中的所有元素。舉個例子,假如b[5]=,指標a指向b陣列,a就是b[0](也就是5)的地址,而*a就是b[0],也就是等於5.
不知道我解釋清楚了沒有。
3樓:俺是男銀
因為他們確實相等,a就代表這個陣列的首元素啊。
4樓:平頭m小市民
這裡的a既是陣列a的名字,又是陣列a的首地址,a[0]表示陣列a的首元素,*a表示地址a所指向的元素,也就是a[0]
5樓:牛刀小試
可能是定義的是指向指標的指標(**a),所以*a表示的是一個地址,而不知元素的值
為什麼c語言中a[0],*(a+0),&a[0]是相等的?
6樓:匿名使用者
陣列的bai首地址也是指
du針,int a[10],int *p.這裡的a和p都是指標。只zhi不過,陣列的首地dao址不能改變
專,而p可以指向其他地址。屬
a[0]表示陣列a的第一個元素
*(a+0)也表示陣列的第一個元素
&a[0]表示陣列的第一個元素的地址,也就是首地址。
7樓:crazy_小豬
誰告訴你這3個是相等的?
c語言中的二維陣列裡a+1和*(a+1)為什麼相等?
8樓:匿名使用者
它們只是值相等,但型別不相等,不能說它們相等。
a+1是int **型別,指向的是陣列a的第二行的起始地址; *(a+1)是int *型,指向的是陣列a的第二行第一個元素的地址。
為什麼c語言裡面二維陣列a[][],a,a[0],*a,*(a 0)值相等
9樓:匿名使用者
沒學過c,我猜一下,你定義了一個二位陣列後,就會有一個指標指二維陣列的首地址,上面的各種表達樣式都是說明的這個指標,而沒有改變這個指標的指向,所以值是相同的
為什麼c語言中二維陣列的陣列名a和*a表示的是同一個值?
10樓:匿名使用者
當定義二維陣列a[m][n]時,陣列名可以認為是二維指標,其指向二維陣列的首地址。
於是a的值就是首地址的值。
而*a,就是a[0],a[0]是第一行的標記,代表第一行的首地址。
在二維陣列中,所有元素都是緊密排列的,這樣整個陣列的首地址,第一行的首地址,和第一個元素的首地址,即a, a[0], &a[0][0] 都是相同的。
於是a和*a的值是相同的。
c語言 二維陣列a【0】與a與a【0】【0】有什麼區別?
11樓:匿名使用者
陣列在記憶體中是連續按行分佈的,對於a[2][3]=,};它在記憶體中的分散式1,2,3,4,5,6;所以他等價於a[2][3]=;在c/c++中,陣列名也即是陣列首地址,這裡加入a=0x1000;那麼它的地址分就是也就取第一個元素的地址,即1000,a[0]是第一行1000,1004,1008的首地址,也是1000,也即是a元素的首地址;
int *b=a[0];
*b和a[0]是等的,是a陣列第一行首地址;不同的是a[0]是隻讀的,*b是可讀寫的因為b是指標變數,你可以試試a[0][3],a[0][4],a[0][5]都能列印出來,別看a[2][3]以為這樣越界了,其實越不越界是按地址來算的,地址上講,&a[0][3]=a[1],所以完全沒問題;按照地址計算上面列印的值就是4,5,6;同理用*(b+3),*(b+4),*(b+5)也是一樣的道理;
a就是陣列的首地址,a[0]是第一行第一個元素的首地址,也即是a的首地址,&a[0]是第一行的首地址,從數值上將,沒問題,只是資料型別上不一樣;
a[0][0]就是取第一行第一個元素的值,也即是1
12樓:匿名使用者
a[0][0]是值,a[0]和a是地址
c語言中*a是什麼意思啊?和陣列一個用法嗎?
13樓:克魯伊夫式轉身
*a=i,就是bai說將i的值賦予*a,使指標
dua指向的地址中存入i的值。*n=*n+1也很好理解,比如指標zhin指向的地中之前dao存入的
回值為5,則上式的意答思就等同於*n=5+1,指標n指向的地址中將存入數值6。a++的意思就是a指向的地址向後移一位。比如之前a指向陣列b[0]的地址,則之後將指向b[1]。
14樓:匿名使用者
1、這是一個指標變數
2、和陣列不一樣,陣列可以根據陣列下標查詢資料,指標取值要加地址偏移量
15樓:安若曦在路上
若定義:int *a=null;
則*a表示一個整形的指標變數,並對其進行初始化。
int arry[10]=;
陣列名arry也相當於一個指標。內
兩者基本可以容
看做相同。
16樓:千島j玉葉
這是個呼叫函抄數,沒有返回值,
先是把襲兩個地址賦bai值給a和n,du
*a是一個指向整zhi數型別的指標變數,*a=i就是dao把i得值賦值給*a,
*n=*n+1;就是把*n得值加1再賦值給*n;
a++;這個語句就是把a的值加1再使用
17樓:匿名使用者
int *a表示a是一個抄指標,或者也可以是一個陣列名,你可以理解為陣列
既然a是指標,那麼在指標前面加*號表示對該指標所指向的地址取值
所以*a=i;就是把i的值賦值給a指標所指向的地址的值,說起來有些拗口,其實就是說改變了a這個地址記憶體的值
*n=*n+1;也是一個道理,表示n指向的地址的值加1
a++;表示a地址加1,就是說本來a指向0x0000,那麼現在就變了,a會指向另外一個地址,那麼這個地址對應的值也會相應的改變。
建議:先找一本c語言的書,把指標一章的基本概念多理解一下,這些都是基礎的東西,需要多體會。
18樓:匿名使用者
*a表示指標;
除了定義階段,*a和a[0]是一樣的
19樓:匿名使用者
1. 定義陣列
int a[10]
a既是陣列的名字,也是陣列的地址,相當與從a這個地址連續專分配了10個int記憶體地址
2.我們可
20樓:匿名使用者
你看一下「c程式設計」的」指標」一章
c語言陣列問題,C語言陣列問題
int main i for i 0 i 這個要問數學老師才知道。c語言陣列問題 你的 問題有以下幾個 1 min和max沒有初始化 2 對於a min 和a max 沒有做迴圈參考 如下 include main printf 最大數是 d,下標是 d,最小數是 d,下標是 d n a max m...
c語言陣列的下標,C語言陣列的下標
樓主你好。注意a是常量,不要被別人誤導了。實際上a是陣列名代表陣列的首地址 注意雖然陣列名和指標都代表地址,但是陣列名不是指標,指標是變數,這個a是常量,可以叫指標常量 而i實際上可以看做陣列中的元素距離陣列首地址的偏移量 距離 a i 就是取距離陣列首元素距離為i的陣列中元素的值,也就是a i 了...
c語言陣列問題
從左至右圖 8位元組正確。b正確,選b 因為系統會給x陣列多分配一個單元儲存字串結束標誌 0 d,編譯出錯 因為陣列名是常指標,不能再賦值,a b 違反了這一規則。第8題 char str 8 因為有一個8,不管str裡面放什麼,系統都保證且僅僅分配給str變數8個位元組的儲存空間。故選8。第9題 ...