到底什麼是“陣列的首地址”?剛學C,不太懂

時間 2023-08-27 12:58:14

1樓:

其實就是陣列的第一個元素的地址,比如說陣列a[10],它的首元素就是a[0]。如果作為實參傳入的話就是a[0]在記憶體中的地址。可以用指標來接收。

2樓:匿名使用者

比如有函式這樣定義:

void fun( int arr,const size_t len )

在主函式main中這樣呼叫:

int main(void)

size_t i;

int arr[arr_size] =

進行二路插入排序 */

fun(arr, arr_size);

此時主函式中的fun(arr, arr_size);就是呼叫了該函式,而引數arr傳遞陣列arr[arr_size]的首地址。

3樓:優雅東方

陣列首地址就是陣列第一個元素的地址,通常用陣列名代替。例如,int a[10];

就是a==&a[0]

知道了不,建議你用清華大學譚浩強教授的c語言程式設計教材,非常通俗!

4樓:李慧奇

就是陣列中第一個元素的地址,著重看看堆和棧的關係,可能就會明白了!

5樓:匿名使用者

就是儲存陣列中第一個資料的地址。

c語言中陣列首地址和陣列第一個元素的地址有什麼區別呢

6樓:四舍**入

1、它們的地址值是相等的。

2、第1個元素的地址如果是p,則p+1就是第2個元素的地址。

7樓:遇見你真好

1.它們的地址值是相等的;

2.第1個元素的地址如果是p,則p+1就是第2個元素的地址;

8樓:匿名使用者

陣列首地址就是陣列第一個元素的地址,相同的。

9樓:匿名使用者

假如這個這個陣列為int a[10] 首地址為 a[0], 第一個也為啊a[0]

為啥a表示陣列首地址而&a表示陣列地址?

10樓:匿名使用者

打個比方:

一個樓 有多個單元,如2個。

一個單元 有多層,如:30層。

一層有多戶,如4戶。

一戶有多個人,如3口。

這樣我們可以建立一個四維陣列 people arrp[2][30][4][3] ;

arrp即是樓的首地址。

也是第一層的地址。

也是第一家的地址。

剛好有個人站在門口,也是這個人所在的地址。

即只是這許多的地址,代表的意義不同。

嚴格說a=&a[0]

a + 1 是下一棟樓。

a+1是下一層 = a[1]

你能理解意思就可以,非要從編譯原理去講,有點累,不如自己去研究體會一下。

11樓:

如果有int a[10];,則a是陣列第一個元素a[0]的地址&a[0],由於它是陣列的第一個元素的地址,所以有人稱之為陣列的首地址。而&a為什麼是陣列的地址,實際上是一種語法約定。這是因為在int a[10];前提下,&a[0]+1應該等於&a[1],而&a+1應該等於&a[10],就是說要跳過整個陣列a,所以叫陣列的地址。

其實對於一維陣列&a並沒有多少意義,有a就足夠了;但對於多維,比如二維陣列,從第一行跳到第二行(或多維陣列的第n行),從上面的分析知,引入陣列地址就很方便了。

12樓:匿名使用者

一個意思 a &a &a[0] 是同一個值 就是同一片記憶體的指標。

c語言陣列首地址相關問題!!

13樓:何霸王

若a是一維陣列名,我們知道*a就是a[0],就是*(arr+0)。因為a是陣列的首地址,*a就是取首地址所指元素,就是陣列的第一個元素。

同樣的道理,a是二維陣列名時,*a也是取a的第一個元素,但是此時a所指的元素是一個一維陣列,所以,實際上a所指元素是一維陣列的首地址。

二維陣列a,a是陣列地址,指向行;有一個等價關係 a[i]=*a+i)

a[i]指向列,&a[i]又指向行。

你可以將*和&理解為相反的操作:

a指向行,*(a+i)指向列,*(a+i)+j)等價於a[i][j];

就按a[3][4]這個例子來看:3行4列陣列a可以理解為a[0],a[1],a[2]這三個一維陣列。

a[0][0] a[0][1] a[0][2] a[0][3]//第一行a[0]

a[1][0] a[1][1] a[1][2] a[1][3]//第二行a[1]

a[2][0] a[2][1] a[2][2] a[2][3]//第三行a[2]

陣列含有4個元素)構成的二維陣列,*a就是a[0],而a[0]就是第0行的首地址,也就是第一個陣列的首地址。*(a+i)就是a[i],就是第i行的首地址。

如果現在定義a是字元型陣列,輸出*a(也就是第一行的首地址)為0000,再輸出*(a+1)就是0004,而不是0001,就可以說明a是指向一維陣列的指標。

陣列名地址為什麼和陣列第一個元素的地址不

14樓:折柳成萌

1、陣列的首地址,在同一計算機上,正常執行的情況下,這個地址是不會變的。

2、陣列的首地址,在不同的計算機,不同的系統上,一般情況下這個地址會變的。

3、現代作業系統的記憶體管理使用的是虛擬記憶體技術,一般來說,習慣性的講記憶體看作是一個大的位元組陣列,每一個位元組都有一個記憶體地址,本身虛擬記憶體地址的變化在同一臺計算機上基本不大,但是實際的實體記憶體地址,變化肯定是很大的。問題中所說的陣列的首地址,本質上是虛擬記憶體地址,因此才有1和2中的描述。

c語言陣列首地址地址常量是個什麼意思

舜惜夢枚千 1.它們的地址值是相等的 2.第1個元素的地址如果是p,則p 1就是第2個元素的地址 3.陣列的首地址如果是p,則p 1就跳過這個數陣列而指向這個陣列最後一個元素最後一個位元組的下一位元組。 這個a比較特殊,當然不是地址常量。a取都得是整個陣列的地址int a 10 printf x n...

我是剛學應用電子的,剛微控制器,但要程式設計,我C語言不會,所以請教一下我需要什麼樣的C語言書

c程式設計 第 二 三版,譚浩強,清華大學出版社 這是通用的教材 你可以看下 org 0000h ljmp start org 001bh int t1 入口地址 ljmp int t1 org 0080h start mov sp,60h mov 30h,0 mov 31h,0 mov 32h,0...

IT到底是學什麼的?IT主要學什麼

it,廣泛的講,就是資訊科技,這裡所包含軟體和硬體 只基於電子產品 當然也包含原始的資訊科技了,什麼報紙 新聞採集等等 人工化,並不是純電子機械資訊處理 說道it到底學什麼,這個我們可以分為兩個方面來看 一 軟體。二 硬體。現在是資訊相對發達的世道,軟體開發 軟體應用等等得到很大的空間延伸。而這些還...