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

時間 2021-09-07 13:29:16

1樓:舜惜夢枚千

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

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

3.陣列的首地址如果是p,則p+1就跳過這個數陣列而指向這個陣列最後一個元素最後一個位元組的下一位元組。

2樓:

這個a比較特殊,當然不是地址常量。&a取都得是整個陣列的地址int a[10];

printf("%x\n", a);

printf("%x\n", &a);

int *p = a;

printf("%x\n", p);

printf("%x\n", &p);

前面兩句輸出是一樣的,但是後面兩句輸出是不一樣的

3樓:匿名使用者

首先你要明白陣列名a代表什麼,如果在printf裡直接輸出a,那麼a是代表陣列的第一個元素,即a[0],&a就表示取a[0]的地址,所以一個輸出的是陣列元素a[0]的值,一個輸出的是a[0]的地址。其次就是printf輸出地址是用%p輸出,不是用%d。程式執行一次你就明白了。

&是取地址符號

*是取值符號

所以你最後一句printf("%lld\n", &(int *)(0x1234)); 語法上就有問題。0x1234是什麼?

4樓:匿名使用者

&a的資料型別是int (*)[10],也即是它是指向一個陣列的指標。

a是一個陣列,表示陣列的首地址,可以定義指向它的指標int (*p)[10] = &a;

這跟const int i = 0;

const int* pi = &i;

的語法有點像。

以上,a和i都是在記憶體中分配空間的。它們可以取地址(&a,&i)但0x1234這樣的數值並沒有在記憶體中有儲存空間,也就無所謂取地址操作了。

5樓:細細的鐵絲

變數 變數名所對應的地址

常量哪來的地址

在c語言中陣列名是一個什麼的常量

6樓:匿名使用者

陣列名是代表該陣列的首地址且符合識別符號書寫規定的變數識別符號。

整個陣列是以首地址開頭的一塊連續的記憶體單元。如有字元陣列char c[10],設陣列c的首地址為2000,也就是說c[0]單元地址為2000。則陣列名c就代表這個首地址。

因此,在使用scanf()函式的時候,變數c前是不能新增地址運算子&的,scanf("%s",&c);則是錯誤的的寫法。

7樓:聽不清啊

在c語言中陣列名就是一個指向同名陣列首地址的一個(該陣列元素型別的)指標常量。

例如:int a[100];

那麼,a就是一個指向a[0]的int 型的指標常量。

8樓:匿名使用者

int [10] 型別

理解成:int陣列型別,陣列大小為10。

你可以使用這個檢視:

#include

using namespace std;

int main()

{int ar[10];

cout<或者你在編譯器裡面單步除錯到int ar[10],然後在變數檢視視窗裡面可以看到該變數ar的型別。

9樓:

int a[10]; //a的型別為const int *,是常值整型指標,不能改變a的值。

10樓:匿名使用者

陣列名代表該陣列的起始地址,沒別的意思,你可以用vc++除錯,可以看到陣列名,就是一個地址

11樓:1234567珏

陣列名 代表首地址,,,這樣看來可以當做int 但貌似可以自定義。。

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

12樓:四舍**入

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

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

13樓:遇見你真好

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

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

3.陣列的首地址如果是p,則p+1就跳過這個數陣列而指向這個陣列最後一個元素最後一個位元組的下一位元組。

14樓:匿名使用者

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

15樓:匿名使用者

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

c語言中陣列名就是陣列的首地址,怎麼解釋?哥們菜鳥

16樓:匿名使用者

哥們應該寫錯了吧,陣列名應該是a,以你的例子為例。int為型別說明符,a為說組名,【3】【20】是常量或者常量表示式;c語言預設陣列名a為陣列首地址;希望對你有幫助

17樓:手機使用者

樓主,你定義了一個二維陣列,但你弄錯了一點,陣列名是a而不是你說的a[3][20].

對於二維陣列a是指向行的而不是指向列。 陣列名a是二維陣列第一行的起始地址,a+1是第二行的起始地址。

18樓:匿名使用者

比如a[3][4]

c語言對二維陣列的處理方式是將其分解成多個一維陣列。如對二維版陣列a的處理方式是把a看成是一權個一維陣列,陣列a包含a[0],a[1],a[2]這3個元素。而每一個元素又是一個一維陣列,各包含4個元素,如a[0]所代表的一維陣列又包含a[0][0],a[0][1],a[0][2],a[0][3],這4個元素。

由於系統並不為陣列名分配記憶體,所以由a[0],a[1],a[2]組成的一維陣列在記憶體中並不存在,他們只是表示相應的行的首地址。

19樓:匿名使用者

這個數來組名是a

a就相當於指自針bai,存的是陣列的首du地址1 #include

2 int main()

3 可以zhi列印出a的地

dao址

20樓:匿名使用者

int a[3] [20],在這個定義裡面,a是陣列地址。所以有a==a[0]=&a[0][0]

c語言中a【10】什麼意思?

21樓:呆

如果是 type a[10];是定義了一個長度為10 型別為type 的陣列

如果只是單純的a[10] 指的是陣列中第十一個元素

22樓:yeara洛

a[10];定義一個陣列a,他的長度是10;

23樓:自我程式設計

如果在型別後面的話,就是定義陣列a大小維度10的意思。比如 int a[10] 就是定義整型陣列a,大小10個整型資料大小(1個int佔 4位元組的話,就是佔40個位元組大小的記憶體)。

如果是在表示式中,比如 a[10]=1; 這裡a[10]就表示a陣列第11個元素(陣列下標是從0開始的,10就是第11個元素)。 a[10]=1就是給該元素賦值1,同理如果在等號右邊就是取a[10]的值。

另外 &a[10] 表示a[10]元素的地址。 a表示a陣列首地址常量,相當於&a[0]。

24樓:新一代的2貨

陣列嗎,a[10]指該陣列的第11個元素(下標從0開始)。

c語言中陣列名代表陣列首地址,它的值在執行期間可以改變嗎?

25樓:文化廚子

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

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

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

26樓:匿名使用者

陣列有兩種定義方法:

1.int a;

2.int *a;

這兩種差不多是等價的,也就是說,2中的a=1中的a,因為a就是一個地址。

比如在1中訪問元素是a[5];

那麼在2中訪問元素是*(a+5);

這兩種訪問是等價的!

要好好理解指標的定義才能弄明白,因為要記住,陣列名就是一個指標,指標的內容是陣列第一個元素的地址!

你說的ar**++在這裡是a++,就是相當於在陣列中的a[i++];

也就是說a[i++]=*(a++),可以上機實踐一下

27樓:匿名使用者

比如:a[5]

其中a就代表代表首地址了

但是a++就是說他的下一個地址了

絕對不是說讓首地址發生變化了.

28樓:匿名使用者

任何陣列的陣列名 都可以進行 ar**++ 的操作吧陣列名代表的 是一個在陣列初始化時指向陣列首地址的一個指標ar**++ 不過是把這個指標指向的地址 移向記憶體中的下一個地址就這樣而已

29樓:匿名使用者

陣列名不能改變(是指標常量)

ar**不是陣列名。比如宣告為如下形式 char * ar**,ar**是指向字串陣列的指標。

c語言,怎樣把陣列的首地址賦給另一個陣列

30樓:匿名使用者

不能把陣列的首地址賦給另一個陣列。因為陣列名是常量指標型別,初始化之後是不能夠被修改的。

例如 int a[100]; int *b=a;

第二種就是直接用迴圈一一複製每個元素。

例如 for(i=0;i

31樓:匿名使用者

提示錯誤,提示的錯誤應該是型別不匹配,一個是地址,一個是非地址型別的地址。你需要一個陣列儲存的變數型別是地址,那就應該定義成指標陣列型別;

如:char *apczarry[10] ; 此時就可以把一組字串變數的地址賦給陣列。說白了就是這個陣列存的資料就是地址,只是以這個地址開始的空間記憶體的是字串的變數

32樓:匿名使用者

陣列名是常量指標,所以你對revtsn賦值是錯誤的這裡只能通過值的逐一拷貝到revtsn中

p = msg1.wparam;

revtsn[i++] = *p++;

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

其實就是陣列的第一個元素的地址,比如說陣列a 10 它的首元素就是a 0 如果作為實參傳入的話就是a 0 在記憶體中的地址。可以用指標來接收。比如有函式這樣定義 void fun int arr,const size t len 在主函式main中這樣呼叫 int main void size t i...

c語言scanf為什麼要用取地址符

因為scanf要往你的變數裡寫入數值,所以他必須知道那個變數的地址,至於變數裡存的是什麼值,他是不管的,反正他寫入之後就被覆蓋成新的值了 對比printf,他是要輸出變數裡的數值,他只管要那個值,至於地址在哪,他也無所謂 這就是寫和讀的本質性區別,寫只要地址,讀只要值 變數其實同時有地址和值兩個東西...

c 中為什麼陣列地址可以作為引數傳遞而不能直接賦值給別的陣列呢

這是甲魚的臀部 規定.因為陣列名錶示陣列的首地址,int b它要定義自己的陣列空間,當然不能用別的陣列的空間,所以不能把a傳給它.但陣列作為引數傳遞時,array只是個臨時指標變數,函式還是直接對實引數組進行操作,不需要另外生成陣列.樓上兩位說的a的指標,其實就是陣列首元素的指標,即陣列首地址,只不...