在定義陣列時,陣列大小必須是常量,不能使變數或變數表示式

2021-04-15 12:27:05 字數 3433 閱讀 1963

1樓:莊政警

你如果用vc6的話,bai這樣是du不行的,因為vc6有自己的zhi一套標準

dao,不遵守c/c++標準

vc2002以後的版本就正內常了

vc6這種情況可以用枚容舉常量代替const常量:

enum ;

int a[n];

2樓:匿名使用者

int const n=5;

儘管n的值是常量5,不允許通過n改變,但是 ,並不等於n的值不能改變,實際上可以通過指標對其內值進行修改,比如int *p=&n; *p=12; 這樣那個就修改了n的值(將&n賦值給p的時候編譯器可能會發出警告),所以n是一個變數,容是一個特殊的變數,被稱為常變數。

因此,n不是一個常量,只是一個不能通過n來修改其值的一個變數。所以不能用它來給定陣列的大小。

3樓:匿名使用者

陣列用常數定義大小就行

c語言 定義陣列時 大小必須是常量嗎

4樓:yesyes科

1、首先雙擊啟bai動visual studio 2015,單擊「檔案du」-「新建」-「專案zhi」,dao選擇visual c++,然後是「空專案」。

回2、定義了2個一維陣列,一個名為

答arry1的整形陣列,有1個元素;arry2為實型陣列,有100個元素,注意陣列下標是從0開始的,不是從1開始,比如arry1的第一個陣列為arry[0]不是arry[1]。

3、對陣列賦值或者部分賦值,第一個表示x[0]=1,x[1]=2,x[2]=3,x[3]=4,x[4]=5;第二個表示對前三個元素賦值,後面的元素都為0,x[0]=1,x[1]=2,x[2]=3,x[3]=0,x[4]=0。

4、一般形式:陣列名[下標1][下標2],下標也是從0開始表示是第一個元素。

5、最後對二維陣列賦值:int x[2][2] = , }表示x[0][0]=1,x[0][1]=2,x[1][0]=3,x[1][1]=4,x[0][0]表示第一行第一列,其他依次類推即可。

5樓:匿名使用者

哈哈,樓上的兩位真有意思,

一個咬定是"唯一的辦法",一個還吹捧的勁兒內勁兒的

動態陣列的malloc和realloc都不容知道吧。

這麼做就可以了:

既然是記錄條數,那麼一定是一個整數,用動態陣列就可以實現。

#include

void main()

6樓:匿名使用者

c語言中,直來到c99標準出現之前,

自宣告陣列時在方括bai號內只

du能使用整數常量表示式。zhi

而c99做了dao很大改進,允許陣列的[ ]中的值是整形變數或是整形表示式。如:

int n;

scanf ("%d", &n);

int array[n];

雖然n確實是需要執行時動態確定的變數,但是在c99中,以這種變數作為陣列大小的形式已經是允許的了。這樣的陣列就被稱之為「變長陣列」。

注意:變長陣列是指用整型變數或表示式宣告或定義的陣列,而不是說陣列的長度會隨時變化,變長陣列在其生存期內的長度同樣是固定的。

7樓:紅山人

嗯.樓上說的是.這是復通常採用的辦製法.

用預編譯命令,在程式檔案的開關,定義一個常量,如這次你使用這個程式時記錄數是一百,你就可以定義:#define max 100,之後,你就可以定義陣列如a[max]下次你再使用這個程式時,記錄數是200,你只要修改一下這裡就可以了.朋友.

8樓:匿名使用者

是的.可以這樣:

#include

#includenum是變數.

int *a=(int *)malloc(num*sizeof(int));

改變大小

專:a=realloc(a,num2*sizeof(int));

用完屬後

free(a);

9樓:匿名使用者

用#define 在開頭申明,這是唯一的辦法

請問定義陣列時長度可以用邏輯表示式嗎? 比如題目給一個常數n,可以int a[n/2]這麼定義嗎?

10樓:匿名使用者

不能在方括號中用變數來表示元素的個數,但是可以是符號常數或常量表示式!

這是陣列的定義,n在程式裡邊應該不是常量型別儲存的。你說的n為常數,也是自己另外賦值的,它本質上還是一個變數。

定義為n是可以的

c語言陣列名後面那個中括號[ ]裡可不可以是表示式?為什麼

11樓:匿名使用者

我覺得陣列的【】括號中的一定是常量,否則在編譯器無法設定記憶體空間。所以可以是表示式,但是應該是常量表示式,不能是變數。

12樓:淦海瑤

可以,但是要注意一點,

這個表示式返回值一定要是正整數或者零

其他的都是錯誤的

給你舉個例子吧

如求一個數字字串中數字出現的頻率

char a[100];

int b[10]=;//計數數字出現的次數int i=0;

gets(a); //輸入數字,否則有可能出錯,因為b的下標超過9while(a[i])

b[a[i++]-'0']++; //這裡a和b的下標都是表示式

a的下標是i++,是正整數或零

b的下標是a[i++]-'0'是a[i]中的數字的ascii碼值減去0的ascii碼值,是0~9

13樓:1個魜_等待

陣列必須先分配記憶體空間才能使用,所以初始化的時候不能是表示式,但是卻可以這樣用:

int a[11]; for(int i = 10; i>5; i--) a[i-5] = 1;

14樓:周碧嬌是我老婆

「」中間必須是整形常量或整形常量表示式。

陣列定義時,必須指定陣列的大小,陣列大小必須是整形常量表示式,不能是變數或者變數表示式

錯誤例子:int n=10; int a[n]; int b[10.3]; int c[n+10];

15樓:匿名使用者

可以是返回值為正整數的表示式

c語言中,陣列中,陣列必須是陣列名常量表示式,對於陣列中元素的下標,下標能不能是變數?如圖,書上沒

16樓:我個去又被註冊

可以的,但是注意這個變數的取值範圍——在這個例子裡,得確保 i 是0到9的整數回,不然會出錯。答

另外,宣告陣列不能用變數的原因是,陣列一旦宣告就確定了(記憶體安排好了)。下標就可以用變數,呼叫的時候就顯得更方便靈活。

17樓:bbk臨兵

下標當然可以是變數,甚至還可以是表示式。

C不能宣告陣列,C 宣告未定義大小陣列string i 然後向裡面賦值,該怎麼做呢?

你那樣宣告陣列是不可以的 namespace hw0815 private void btnmove click object sender,eventargs e char c 下面要初始化的話就放到函式裡面 namespace hw0815 private void btnmove click ...

C b s定義不確定大小的一維陣列

那就不要用陣列。用arraylist或list。這種資料結構容量是不確定的。等你構造好之後有必要的話用很方便就能轉換為陣列。arr new a b object obj 這樣就可以得到一個陣列了。string fn 在用的時間,可以。fn new string n n是自定義的整數。嗯。我支援直接用...

什麼是陣列?為什麼要定義陣列,有什麼用。拜託各位大神

開谷菱 什麼是陣列 陣列就相當於糧倉 陣列裡面的資料就相當於糧倉裡面的每一粒稻穀 為什麼要定義陣列 節省記憶體,沒定義一個變數,系統就會在記憶體中劃分一個空間來存放該資料,這麼說,記憶體相當於家,如果沒有糧倉,那麼家裡沒收穫一粒稻穀,那麼 家就要專門找個位置來放稻穀,如果有了糧倉,家就可以把稻穀全放...