㈠ c語言,數組定義時,可以這樣寫arr[ ] ,不寫下標,可以么為什麼
只有在直接初始化的時候,可以。
比如 arr[] = {1, 2, 3};
沒有初始化時就不可以。
大概就是要知道數組的大小,如果直接就初始化了,那也等於知道數組大小。
更根本的原因就是,語言和編譯器的編寫者這么設定,並在裡面這么實現的。他們喜歡這種方式。
㈡ C語言怎樣給字元數組賦值
1、單字元賦值,可通過數組下標方式或指針方式,引用數組元素,進行賦值。
例子:
char a[10];
char ch='a';
for( i=0;i<10;i++ )
a[i]=ch+i ; //可通過數組下標引用數組元素,完成賦值
char *p;
for( p=a; p<a+10; p++ )
*p=ch++; //通過指針對數組相應元素賦
2、字元串賦值,可使用string.h頭文件中的字元串操作函數進行賦值。
例子:
char a[10];
strcpy( a, "abcdefgh");
sprintf(a, "%s", "abcdefgh");
(2)c語言數組不帶下標賦值擴展閱讀:
C語言給字元數組賦值的優點:
1、簡潔緊湊、靈活方便
C語言一共只有32個關鍵字,9種控制語句,程序書寫形式自由,區分大小寫。把高級語言的基本結構和語句與低級語言的實用性結合起來。C 語言可以像匯編語言一樣對位、位元組和地址進行操作,而這三者是計算機最基本的工作單元。
2、運算符豐富
C語言的運算符包含的范圍很廣泛,共有34種運算符。C語言把括弧、賦值、強制類型轉換等都作為運算符處理。從而使C語言的運算類型極其豐富,表達式類型多樣化。靈活使用各種運算符可以實現在其它高級語言中難以實現的運算。
㈢ c語言數組賦值問題
我不清楚你想問什麼,不過第二種寫法是對的。
char chars[11];//是定義了一個初始值為空總數為11的字元數組。
char s[] = "c language";//定義一個總數為11的字元數組,但是有初值。注意是11個不是10個,用這種方定義的字元數組末尾會加一個\0。
數組的賦值通常是使用花括弧來表示的,但是字元數組比較特殊,它可以使用字元串來賦值,當然你也可以使用通用的方式,用花括弧來賦值,如{'c', ' ', 'l', 'a'.....}。
㈣ C語言定義一維數組時數組的下標可以省略吧
定義數組形式如下:
1.
inta[5];
如果為全局變數,默認為0,否則值隨機。
2.
inta[5]={1,2,3,4,5};
定義長度與元素值。
如果定義的值的數量少於5個,未定義的值初始化為0;
如果多於5個,報錯。
3.
inta[]={1,2,3};
定義數組的值,長度為空,表示自動分配一個長度為後面元素個數的數組。
4.
chars[]="adasda";
僅char型數組支持字元串賦值。
註:多維數組只有最高維可以默認。
如
inta[][2]={{1,2},{3,4}};
但是不能定義
inta[][]={{1,2},{3,4}};
㈤ C語言數組下標
下標可以是變數 也可以是常量。直接說a[0],a[1],a[2],a[3]這樣的下標就是常量。
對於訪問來說, 不在意是變數還是常量, 系統只是需要一個值, 作為偏移量
不管是變數還是常量, 訪問的時候 肯定是一個特定值, 而系統要的 無非是這樣一個偏移量而已。
㈥ c語言裡面數組賦值時可以給部分元素賦值不是下標越界了嗎
書上說得很清楚了啊
int a[3]={xx, xx, xx}; 不關心大括弧中賦值的內容, 定義後, 如果用a[3]就越界了, 因為你只定義了3個元素, 分別是a[0], a[1], a[2], 沒有a[3]的.
㈦ c語言定義數組時可以不寫下標也不初始化賦值么(如:int a[];)
不可以。
但作為一個函數參數時,則可以:
void foo(int bar[])
{}
此時的bar,編譯器並不會把它當成數組,而會把它當成指針。
㈧ C語言字元串二維數組引用可以省略列下標嗎
代碼語法上是沒有問題的。
(1)c語言的二維數組的每一行都可以看成一個一維數組,如書上的name就可以看成5個一維數組組成的。如果數組恰好定義成char類型,那這些一維數組又可以看成字元串。
(2)代碼一開始就是用strcpy函數對這5個字元串賦值。每行的大小隻有10個位元組,因此它還要檢測輸入是否越界。老師應該說過,c字元串的結尾要有個結束符0,所以這里的檢測直覺上是有問題的,>10改成>=10更好一些。
(3)訪問這些一維數組最直接的方法就是書上的做法。name[i]的意思就是第i行的起始地址。在vs編譯器上還允許
char *p = name[i];
char (*p)[10] = &name[i];
char (*p)[10] = (char (*)[10])name[i];
可能有些編譯器不完全支持
㈨ C語言中怎麼給數組某個元素賦值
沒有賦值的元素的值都是初始值,寫一個循環判斷沒有賦值的下標,再賦值就可以了!
#include <stdio.h>
void main()
{
int b,c[5]={0,1,2};
for(b = 0;b < 5;b ++){
if(c[b]==0){
c[b]=1;
break;
}
}
printf("%d",c[b]);
}
而且,數組是不能先定義再給它賦值的!
㈩ c語言數組沒寫下標會發生什麼
函數不回了指向了局部數組的指針,局部數組已經過了生命周期被銷毀,返回的指針成了野指針,這是錯誤的。