為什麼c語言中定義a的陣列,我依然能看到a

時間 2021-05-05 23:56:06

1樓:

那是給陣列最後乙個元素後一記憶體位址的數字,值是上次使用該記憶體位址的程式寫入的~與陣列沒有關係~

關於c語言陣列的問題,為啥第4行的是a[11],填a[10]可以麼???求高人指點,有什麼區別

2樓:匿名使用者

第四行填10也是可以的,但是你的程式在編寫的時候是申請了11個空間來用的即:a[0]……a[10],但是程式為了操作方便,將a[0]這個記憶體空間捨棄(就是說不適用它),為了咱中國人的思維採取從下標為1開始操作,所以這裡需要申請11個空間,假如你申請的是10(a[10]),編譯是不會錯的,但是你訪問的時候就會發生陣列越界的問題了!

3樓:陽光小胡同

()}正確的寫法應該是上面這樣的。

這裡涉及到2個問題:

1.陣列宣告的時候a[9]就是有9個元素的陣列,a[10]就是有10和元素的陣列

2.陣列賦值的時候第乙個元素的下標是從0開始的,即a[0],最後乙個下標是宣告時的數字-1,如:宣告時:a[9],最後乙個元素是a[8]。a[9]是超範圍的。

4樓:

在c語言中,陣列的下標從0開始編號

int a[11];其中a表示陣列名,方括號中的常量11表示陣列共11個元素,即:a[0],a[1]……a[10]

不能為a[10],否則會出現越界情況

5樓:

什麼第4行?

哪有a[11],a[10]的?

為什麼c語言中二維陣列的陣列名a和*a表示的是同乙個值?

6樓:匿名使用者

當定義二維陣列a[m][n]時,陣列名可以認為是二維指標,其指向二維陣列的首位址。

於是a的值就是首位址的值。

而*a,就是a[0],a[0]是第一行的標記,代表第一行的首位址。

在二維陣列中,所有元素都是緊密排列的,這樣整個陣列的首位址,第一行的首位址,和第乙個元素的首位址,即a, a[0], &a[0][0] 都是相同的。

於是a和*a的值是相同的。

定義乙個整形陣列a[10]輸入10個數為各個元素賦值並輸出其中最大的數

7樓:匿名使用者

#include

void  main(){

int i,max,a[10];

scanf("%d",&a[0]);

max=a[0];

for(i=1;i<10;i++)

{scanf("%d",&a[i]);

if(max

執行示例:

c語言中,定義乙個陣列int a[10],a是整個陣列的名字,那麼a裡面應該是存放10個整型資料, 10

8樓:紅藍塞思克

不矛盾啊 a只是代表乙個位址 存放是十個整型數的是一段連續的儲存空間,這段儲存空間的首位址存放到a中也是a[0]的位址

c語言中陣列裡的a[10]={'a'},這個a為什麼可以賦給他變數?

9樓:戶哲茂

char a[10]=可以分成兩步.

char a[10],就是建立位址和空間。

char a[10]=給這個空間賦值,這個公式翻譯過來就是char a[10]=

綜合起來就是

char a[10];

a[0]=97;

任何變數都需要位址,而'a'其實就是變數97,不是字串那樣的位址表示方式,他的位址是系統臨時分配,可以忽略。

10樓:seo自學部落格

我認為應該 是乙個位址,等號右邊是乙個陣列指標應該。然後把這個指標儲存在另一陣列的第11個元素中

c語言陣列宣告問題,C語言中定義陣列時對其全部初始化為1的問題

有初始化的陣列定義可以省略方括號中的陣列大小。例如,下面的 中陣列定義為5個元素 int a 如 char str program 編譯時必須知道陣列的大小。如果陣列大小要根據運 況來確定,可以使用動態陣列 int p int calloc num,sizeof int 一般有四種陣列定義方式,以一...

c語言關於定義二維陣列的問題,C語言中二維陣列的定義問題

焮欣 首先你要理解二維陣列的真正含義,它的第一維就是一組資料的起始位址,第二維就是某組資料中的某個值.其次,你要知道a 4 所表達的意思,是指二維陣列a的每一維都是由4個元素組成的一維陣列.而編譯器可以根據你賦給a的初值個數計算它的第一維長度 元素總個數 4,如果不能整除,則長度加1,此時還應該有幾...

c語言中如何給不確定大小的陣列定義並使用

c語言中沒有明確的 動態陣列 也就是不確定大小的陣列 這個概念,只能用動態記憶體分配來實現,我給你一個思路 建立陣列 用動態分配分配一個指定大小的記憶體 陣列 銷燬陣列 釋放動態分配記憶體 訪問元素 通過記憶體指標間接引用 增加元素 再分配一塊新記憶體區域 大小為增加後的大小 把久區域的元素資料複製...