字元陣列定義的時候一定要初始化嗎

時間 2023-01-28 11:45:03

1樓:高金山

c語言,可以不初始化陣列啊,但它的值是不確定的。

因此,跟全初始化為0是不一樣。

2樓:福建省寧德市

陣列在定義時並沒有強制要求要初始化,可以需要時再賦值。

綜上,c語言中陣列可以不初始化。

其次,在c語言中,陣列歸於佈局資料型別。一個陣列能夠分化為多個陣列元素,這些陣列元素能夠是根本資料型別或是佈局型別。因而按陣列元素的型別不一樣,陣列又可分為數值陣列、字元陣列、指標陣列、佈局陣列等各種種類。

3樓:匿名使用者

如果你把陣列定義為全域性資料(定義在主函式之外),那麼編譯器會幫你把陣列初始化位0,但是如果不是全域性資料,那麼陣列陣列元素的值就是不確定的了。(其實是多少與你用的編譯器有關,比如會把它初始化位十六進位制數cc)

但是如果你這樣定義陣列。

int a[10]=;

那麼有些編譯器會把後面的項初始化為0,但也不能保證所有的編譯器都會這樣做,所以不建議這樣做,儘量對陣列進行初始化。

c語言如何先宣告後初始化字元陣列 5

4樓:天雲一號

在定義的時候就bai對陣列進行賦du

值操作稱為初始化;zhi

先定義後dao賦值並不能稱為版初始化,只能叫做權對陣列進行賦值操作。

舉例如下:char a="abcd"; 定義(宣告)字元陣列a,並進行初始化。

// 以下為陣列的賦值操作。

char b[5]; 定義(宣告)一個字元陣列b// 對字元陣列每個元素進行賦值。

b[0] =a';

b[1] =b';

b[2] =c';

b[3] =d';

b[4] =e';

5樓:匿名使用者

直接char a[10];即可,後bai邊用時在賦du值就行了zhi!

例如:#include ""

main()

c語言初始化陣列時,一定要使用靜態儲存嗎?

6樓:匿名使用者

ansi/iso c之前,對陣列的一次性初始化必須要求陣列被宣告為靜態的,樓上說static和extern與變數的使用範圍有關,沒錯,但不是這裡要使用的含義,這裡靜態(全域性變數預設為靜態的)指的是該變數只初始化一次。全域性變數肯定是隻初始化一次的,所以這主要是針對函式塊裡面宣告的變數來說的,就是說在函式塊裡面宣告的靜態區域性變數,只在第一次進入這個函式塊的時候才進行初始化。ansi/iso c允許對宣告的非靜態陣列也進行一次性初始化。

所以在支援ansi/iso c標準的編譯環境下,函式塊內寫。

static int a[3] =

和int a[3] =

都對。函式塊外面寫static時才是樓上所說的變數的適用範圍,不加static宣告出來的變數的範圍可以在檔案之間,加了static宣告的變數則只在該檔案內。但此時,你加不加static都不會影響你寫int a[3] =因為這個時候a是全域性變數,預設的是靜態的,這樣的初始化當然沒有問題的。

另外,這種一次性初始化必須在定義一個變數的時候才是允許的。這一點,樓主要謹記,不管是ansi/iso c還是c99都是不允許出現。

int a[3];

a[3] =

的,不管有沒有static修飾。如果你不想在定義的時候初始化,那就只有等到你需要的時候通過賦值操作來進行,陣列當然得通過迴圈。

7樓:匿名使用者

定義時初始化應該寫成。

int a=

或者用new運算子來實現。

c++裡是這樣的,至於c我就不清楚了。

當然不行,a[3]=是什麼句子啊!a又不是二維陣列。

8樓:

無論是靜態,區域性還是全域性陣列只有在定義時才能初始話,否則必須通過其它方法,如迴圈操作實現。

如:int a =

static int b[3] =

上面是在陣列定義時初始化,因而正確。

任何int a[3];

static int b[3];

a[3] =

b[3] =

沒有在定義時初始化都是錯誤的!

9樓:匿名使用者

不管是什麼變數都應該先定義後賦值。

而且賦值要符合變數定義。

10樓:匿名使用者

static和extern和定義資料無關,只和變數的使用範圍有關,static靜態全域性變數的使用範圍是當前檔案,extern是檔案間的訪問。

static int a =

int b =

void main()

建議不要看譚浩強的書,這裡有本書,bjarne stroustrup - the c++ programming language

看就看大師寫的。

c語言定義一維陣列,元素未初始化,那陣列元素預設值是什麼

11樓:我是果瘋

一維bai

陣列元素的。

初始化預設值du與所定義zhi的陣列型別有關,不同的數dao組未初始化的。

專預設值也屬不同。

常見的幾種陣列的預設值:

整型:0浮點型:

char型:0或'\u0000' (而非'0')boolean型:false

運用資料型別:null

12樓:匿名使用者

首先。 試一下的bai方法是錯誤的。

(1)全域性du變數zhi

未初始化的全。

dao局變數是 0

(2)區域性變數。

<1>debug版。

是填充字元回, 比如可能是答 0xcdcdcdcd 等<2>release版。

是亂碼, 也就是這個地方原來(在這之前被其他變數使用的時候)遺留下來的資料。

13樓:匿名使用者

靜態或者全域性的話,預設是0。

不然可能是亂碼。

14樓:a計劃

數值型別的陣列自動賦0,字元型陣列自動定為空字元(即'\0')

15樓:周軒儀加油

預設是0的,你可以測試一下!

16樓:匿名使用者

試一下不就知道了。 一般來說是0

c語言字元陣列如何初始化?

17樓:匿名使用者

c語言允許用字串的方式對陣列作初始化賦值。例如:

static char c=; 可寫為:

static char c=; 或去掉{}寫為:

static char c="c program";

當對全體元素賦初值時也可以省去長度說明。例如:static char c=;這時c陣列的長度自動定為9。

18樓:文化廚子

1、直接逐個初始化。

字元陣列:字元陣列的初始化,最容易理解的方式就是逐個字元賦內給陣列中各元素。

char str[10]=;

注意:容如果花括號中提供的字元個數大於陣列長度,則按語法錯誤處理;若小於陣列長度,則只將這些字元陣列中前面那些元素,其餘的元素自動定為空字元(即'\0' )

2、用字串常量來初始化字元陣列:

在c語言中,將字串作為字元陣列來處理。因此可以使用字串來初始化字元陣列。

也可以省略花括號。

但是,上述這種字元陣列的整體賦值只能在字元陣列初始化時使用,不能用於字元陣列的賦值,字元陣列的賦值只能對其元素一一賦值,下面的賦值方法是錯誤的。

19樓:丨冷灬風丨

初始抄化char陣列:

char str[10]="hello";

char str[10]=;

char str[10]=;

char str[10]=;

char str[10]="hello, world.";

char str="hello, world.";

第一種情況:初始bai化資料小於陣列長度du

如前面兩個初始化的例子zhi,這兩個例子的效果一樣,前dao五個字元為hello,剩餘的用'\0'填充。

第三行與第四行,都只指定了第一個字元,剩餘的全部用'\0'填充。第四個例子相當將整個陣列初始化為'\0'

第二種情況:初始化資料等於或超過資料長度。

這種情況下,超出的部分將被丟棄,所以最五個例子的最後一個字元為'r'.

此時使用一些字串函式時要特別注意,因為該陣列不含有'\0',會造成不可預期的結果。

第三種情況:不指定陣列長度。

這種情況下,陣列部分如果不含有明確指定的'\0',那麼編譯時會被自動新增一個'\0';

在陣列不含有明確的'\0'時,sizeof=strlen+1

在c語言程式設計中是不是一定要對字元陣列進行初始化

20樓:囊中無忌

不知道你想幹嘛?在定義的時候可以不必初始化,但是你一旦要引用某個元素,比如a[i],那麼你必須對a[i]進行初始化。

c語言中如果字串陣列沒有初始化,那麼陣列名會指向**?

21樓:水上漂湯

char ar[10];這是定義一個擁有10個char型別元素的陣列,它被儲存在棧中,擁有自己的地址。

沒有初始化並不影響什麼,只是它的元素沒有初始值而已(編譯器會給它一個預設值)。

22樓:匿名使用者

char ar[10]; 已經指定了陣列的大小,在編譯的時候已經分配了記憶體的起始地址和大小。

字元陣列的定義

23樓:小夏在深圳

在c語言中,沒有專門的字串變數,而是將字串存入字元陣列來處理。

即用一個一維陣列來存放一個字串,每個元素存放一個字元。

如:char c[5];

字元陣列是陣列的一個特殊情況,但它的定義方法與上述介紹的類似;引用方法可以與上述介紹的同,也有其獨特的引用方法;由於字元型與整型是相互通用的,因此上面定義也可改為:int c[5]。

24樓:匿名使用者

對,要麼像char s[10]這樣限定大小,要麼通過初始化限定大小,如char s="12345";

25樓:匿名使用者

是的 這樣定義是不能通過的,首先你這是c語言風格的字元陣列,在c語言中,你必須指定分配多少的記憶體給這個變數,所以要麼是char s[10];要麼就直接初始化。另外如果你想達到不分配記憶體的目的,c++中可以定義string,比如說 string s;然後再s="1234";或者別的操作,這是可以的。

26樓:匿名使用者

c裡面宣告陣列的話必須指定大小。例如:char s[num] 其中num必須為常量。

C 陣列定義與初始化,C 關於陣列的賦值與初始化的問題

int b1 是合法的,系統會自動給陣列b1分配3個整型數的空間大小,因為它是一維陣列,大小可以由後面確定。int b2 它是二維陣列,我們至少需要定義它的最高維的大小。也就是至少是b2 4 想想你什麼都沒定義,我怎麼通過後面的賦值來判斷b2陣列是幾行幾列呢?最後兩組是指標,相信看看指標就會知道,指...

c語言程式 定義二維陣列int m 3並初始化,完整題目如下

include int main void file fp 寫入操作 fp fopen data w 以只寫方式開啟檔案 fwrite m,sizeof m 1,fp 寫入資料 fclose fp 關閉檔案 開啟操作 int newm 3 3 int i,j fp fopen data r 以只讀方...

在C語言中,為什麼定義變數的時候總是初始化為0呢?該怎麼理解

符潔愚媚 因為變數是可以變動的,定義一個變數不初始化時,變數會是一個隨機數,進行計算了的時候,就會引用那個隨機數進行計算,會有誤差。 如果全域性變數在定義時不初始化則初始值是0,如果區域性變數在定義時不初始化則初始值是不確定的。 沒字天書 誰說總是初始化0的,全域性變數和靜態變數會,區域性變數不一定...