c語言中陣列名是地址變數嗎,c語言中陣列名是一個地址變數嗎

2021-05-29 02:58:01 字數 2778 閱讀 8229

1樓:匿名使用者

結構體名相當於類名,作用也與類名相近似。也可以將結構體名類比為自定義型別名,等同於int,double,float等,通過結構體名定義變數。

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

2樓:匿名使用者

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

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

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

3樓:聽不清啊

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

例如:int a[100];

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

4樓:匿名使用者

int [10] 型別

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

你可以使用這個檢視:

#include

using namespace std;

int main()

{int ar[10];

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

5樓:

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

6樓:匿名使用者

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

7樓:1234567珏

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

c語言裡 陣列名是地址嗎

8樓:匿名使用者

是地址,可以稱作陣列地址,也可以看成第一個元素的地址。舉個例子:

#include

int main(int argc, char *argv);p = array;

printf("p[2] = %d\n", p[2]);

return 0;

}這個程式輸出結果如下:

p[2] = 3

程式的第六行 p=array 就是把陣列地址賦值給地址變數。

為什麼c語言中,陣列名是一個地址常量,不能對它進行賦值運算

9樓:匿名使用者

在最終的來彙編結果中,陣列名只是源一個標號,對

bai應一du個地址,在程式中使用數zhi組就是要dao替換成這個起始地址,因此作為標號本身是不可以修改的,也不是一個變數。

用陣列名進行計算就是用陣列起始地址計算,但不可以給陣列名重新賦值

c語言中,陣列名和指標名都代表記憶體地址。那麼定義一個其他的變數,比如int a,這個 a是否也代表

10樓:匿名使用者

非也非也。

int a,a就是代表的記憶體裡面的值,&a才是a的地址。

int *a,a代表的是一塊記憶體地址,*a代表該地址裡面的值。

11樓:lemon潞

陣列名和指標記憶體放的是地址,這個地址記憶體放的值,a內本身存放的就是值

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

12樓:文化廚子

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

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

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

13樓:匿名使用者

陣列有兩種定義方法:

1.int a;

2.int *a;

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

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

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

這兩種訪問是等價的!

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

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

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

14樓:匿名使用者

比如:a[5]

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

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

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

15樓:匿名使用者

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

16樓:匿名使用者

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

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

c語言中陣列名作為函式引數,C語言中,陣列名作為函式引數,屬於什麼傳遞,為什麼?

因為你從主函式傳過來之後,是給了a 10 啊,與arrlen無關啊,而且在呼叫函式時是會給區域性變數重新分配記憶體,但這也只是說原先那個記憶體消失了,那麼記憶體裡面的值也會消失了,就會重新執行rrlen sizeof a 4 函式定義和宣告的引數應該是 intoid check struct snm...

1 C語言中,陣列名是不可變的()量,不能對它進行加 減和賦值運算

陣列名是來指標常量,自不能進行賦值,可以在表bai達式中作為參du數參與加減。比如zhi char s 10 s表示一個指dao向陣列首地址的指標常量,printf c s 1 可以列印s 1地址的值。但s 不行,因為s 相當於s s 1 賦值就不行了。c語言中,陣列名是一個不可變的 地址常 量,不...

從編譯器角度分析C語言中陣列名和指標的區別

從編譯生成的角度來說 陣列名 沒有本身的儲存空間,其只是一個地址。代表陣列的首地址。於是 陣列名的值 不可能被改變。而指標 是一個變數 有自身的儲存空間 可以被改變值 執行數學操作。c語言中陣列名和指標的區別 陣列在當作引數傳遞時,可以當作指標 當然,引數傳遞相當於賦值操作,所以用指標來接受陣列的值...