C語言中陣列後面可以不要大括號不?我是個初學者,可以講詳細一點嗎

2021-05-25 17:25:38 字數 1217 閱讀 7196

1樓:仵雅青

沒敘述明白,你是說中括號吧,例如 char arg[10]="abcd" ;這種方式可以為包含10個char型別的陣列賦值,如果這個陣列不帶中括號的話,那就是指標的用法,例如 char *arg="abcd";這陣列與指標這兩種的區別就是分配記憶體的方式不同,陣列是在棧空間,可以更改內容,指標是在**段 一旦初始化就不可更改。陣列的char arg[10]="abcd",也可以用作指標,就是初始化之後用 arg 代表的是字元'a'的地址,也就是這個陣列的首地址。好好學吧,弄懂陣列和指標你就算入門了 。

2樓:德克and德華

後面?你是說給陣列賦初值的部分嗎?

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

3樓:匿名使用者

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

4樓:淦海瑤

可以,但是要注意一點,

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

其他的都是錯誤的

給你舉個例子吧

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

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

5樓:1個魜_等待

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

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

6樓:周碧嬌是我老婆

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

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

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

7樓:匿名使用者

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

c語言中陣列元素互換的問題,C語言中陣列元素互換的問題

當index為0時,bai陣列中下標為du0的和下標為4 0的元素交換,也zhi就是第一個和最後一dao個交換,回1,5 交換 當index為1時,答陣列中下標為1的和下標為4 1的元素交換,也就是第二個和倒數第二個交換,2,4 交換 因為此陣列元素的個數為奇數個,所以,最中間那個沒有必要交換,所以...

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

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

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

結構體名相當於類名,作用也與類名相近似。也可以將結構體名類比為自定義型別名,等同於int,double,float等,通過結構體名定義變數。在c語言中陣列名是一個什麼的常量 陣列名是代表該陣列的首地址且符合識別符號書寫規定的變數識別符號。整個陣列是以首地址開頭的一塊連續的記憶體單元。如有字元陣列ch...