① C語言中怎麼給數組賦初值
數組賦值可以通過以下幾種方法:
1、定義的時候直接賦初值(用{});
2、用循環語句依次給數組各元素賦值;
3、將數組放在一個結構體裡面,通過結構體的引用給數組整體賦值;(數組本身不能直接整體賦值)
② C語言一維數組賦值方法
1、初始化時進行賦值。
inta[2]={1,2};
charstr[20]="helloworld";
2、逐個賦值
inta[4];
a[0]=1,a[1]=2,a[2]=3,a[4]=4;
等同於。
for(intinx=0;inx!=4;++inx)a[inx]=inx+1;
3、通過函數復制數據以實現賦值
比如下面的代碼,通過memcpy函數來實現數據的復制,以實現數組賦值的功能。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
intmain()
{
intinx;
inta[10]={1,2,3,4,5,6,7,8,9,10};
intb[5];
//復制4個元素,b[4]將是隨機值
memcpy(b,a,4*sizeof(int));
for(inx=0;inx!=5;++inx)printf("%d ",b[inx]);
printf(" ");
memcpy(b,a+4,5*sizeof(int));
for(inx=0;inx!=5;++inx)printf("%d ",b[inx]);
printf(" ");
return0;
}
③ 若有說明int a[3][4];則a中各元素 A可在運行階段得到初值0; B可在編譯階段得到初值0; C不能得到特定的初值
當定義數組 int a[3][4]; 時,數組的初始化狀態取決於其作用域。如果數組是在函數內部定義的,那麼它的各個元素在運行時可能未被初始化,因此初始值是不確定的。這表明數組中的元素可能包含任何未使用的內存值,通常不能直接使用。因此,選項C是正確的選擇。
然而,如果數組 a 被定義在函數外部,即為全局變數,那麼在編譯階段,編譯器會為這個數組分配內存空間,並自動將所有元素初始化為0。這是因為全局變數在進入程序時就已經存在,編譯器會在內存中為它們預留空間,並設置為默認值0。因此,選項B是正確的選擇。
值得注意的是,在函數內部定義的局部數組並不會自動被初始化為0,除非開發者明確指定了初始化語句。而在函數外部定義的全局數組則會由編譯器自動處理,確保所有元素初始化為0,這有助於避免未初始化變數帶來的程序錯誤。
總之,數組 a 中元素的初始值取決於它們的作用域。對於局部數組,初始值是不確定的,而對於全局數組,在編譯階段會自動初始化為0。