c語言字元數組的初始化
A. c語言數組的初始化表示方法
不是inta[] 而是例如int a[10]這種。括弧內一定要有個常量數字。
我們可以這樣定義內
#define N 5
int a[N]
這表明了數組容名為a;數組有5個元素;分別是a[0]到a[4];
對於數組來說;數組是變數的集合,因此數組也具有與變數相同的數據類型和儲存類型。數組的類型就是它所有的變數的類型。在定義數組時,應在數組名前對數組的類型加以確定。如上面的int a[10];則表明了數組內元素均為整形。
所有當表示浮點型可以定義為例如float a[10]。 舉例如下:
(1)c語言字元數組的初始化擴展閱讀
數組名是由用戶命名的C語言標識符,要遵循標識符命名規則。數組名表示數組存儲區域的首地址。數組的首地址也就是第一個元素的地址。數組名是一個地址常量,不能對它賦值。
數組名後是由方括弧括起來的常量表達式,不能使用其他括弧
B. 關於C語言字元數組初始化的問題如 char str[256]={'\0'};,除str[0]
你這樣賦值
C. C語言數組字元串初始化問題
一、沒有char s[5]={"abc"}; 這種寫法。
除了char s[5]="abc"; ,還有char s[5]={'a','b','c'};這兩種寫法。
兩種寫法的區別是 char s[5]="abc"; 在後門自動加一個0,習慣上稱之為「字元串數組」;而char s[5]={'a','b','c'};不會再結尾加0,一個稱之為「字元數組」。
二、s【0】是只能存放一個字元的存儲空間,只能存放一個字元,不可能存放字元串abc 。
如有疑問請留言。
D. C語言 字元數組 初始化問題 char a[10000000] = {0};
Windows系統默認用戶棧抄大襲小為4M(約4000000)。
現在用了10000000位元組當然會溢出。
為什麼編譯器沒報警告呢?原因:編譯器編譯時並不做檢查。
可以嘗試將堆棧設置更大(具體怎麼設置請網路)
要麼將其放到函數外,也就是作為全局(靜態)變數存在,那就不受限了(不過最多也就是4G),故編譯可以通過。
E. c語言的字元串數組初始化問題
字元串來至少要有一個結束符源
%s的列印,是以結束符為標志的
兩點要理解
1、字元串和字元數組是不一樣的兩個東西
雖然都是這么定義,但是字元串需要\0這個結束符,字元數組不需要
2、變數的內存模型
程序運行時,要申請內存來保存變數的數據,並且是緊挨著的,具體順序我忘記了,有的編譯器可能不同
按你的程序,str1在前,str2在後,並且是緊挨著的,str1 5個內存空間,緊挨著str2 4個空間,後面可能還要空間沒有使用
你輸入abcde後,佔用6個空間,吧str2的一個空間佔用了,這里是不檢查越界的
接著輸入abcd,把str1的結束符覆蓋掉,並且也是越界,因為str2是4個字元空間,結束符要佔一個,是5個空間,把內存中str2後面的一個內存寫入結束符,如果後面還有變數的話,程序會出錯
這樣列印%s時,str1檢查結束符是str2後面的結束符,所以是abcdeagcd,str2是abcd
F. C語言字元數組如何初始化
C語言允許用字元串的方式對數組作初始化賦值。例如:
static char c[]={'c',' ','p','r','o','g','r','a','m'}; 可寫為:
static char c[]={"C program"}; 或去掉{}寫為:
static char c[]="C program";
當對全體元素賦初值時也可以省去長度說明。例如:static char c[]={`c`,` `,`p`,`r`,`o`,`g`,`r`,`a`,`m`};這時C數組的長度自動定為9。
(6)c語言字元數組的初始化擴展閱讀:
數組的使用規則:
1.可以只給部分元素賦初值。當{ }中值的個數少於元素個數時,只給前面部分元素賦值。例如:static int a[10]={0,1,2,3,4};表示只給a[0]~a[4]5個元素賦值,而後5個元素自動賦0值。
2.只能給元素逐個賦值,不能給數組整體賦值。例如給十個元素全部賦1值,只能寫為:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能寫為:static int a[10]=1;請注意:在C、C#語言中是這樣,但並非在所有涉及數組的地方都這樣,資料庫是從1開始。
3.如不給可初始化的數組賦初值,則全部元素均為0值。
4.如給全部元素賦值,則在數組說明中, 可以不給出數組元素的個數。例如:static int a[5]={1,2,3,4,5};可寫為:static int a[]={1,2,3,4,5};動態賦值可以在程序執行過程中,對數組作動態賦值。這時可用循環語句配合scanf函數逐個對數組元素賦值。
網路-數組
G. C語言中 字元串數組的初始化格式是怎麼樣的
比如:
char
a[10]="\0";
用API
memset(a,'\0',sizeof(a));
也可以寫個for來完成
記得點贊啊
H. c語言如何先聲明後初始化字元數組
在定義的時候就對數組進行賦值操作稱為初始化;
先定義後賦值並不能稱為初始化,只能叫做對數組進行賦值操作。
舉例如下:
chara[]="abcd";//定義(聲明)字元數組a,並進行初始化
//以下為數組的賦值操作
charb[5];//定義(聲明)一個字元數組b
//對字元數組每個元素進行賦值
b[0]='a';
b[1]='b';
b[2]='c';
b[3]='d';
b[4]='e';
I. C語言中字元數組的初始化含有多個'\0'該怎麼辦,具體如圖
因為第二張圖中列印語句用的是%s,即列印字元串,所以在第一個\0就會停止
但第一張圖中列印語句用的是%c,即列印字元,所以每個字元都會列印,多個\0會分成多串,但不會終止
J. C語言字元數組初始化的問題
char *a[ ]={"asdf","asdfsadf"}這個是指針數組,相當於char *a[2]={"asdf","asdfsadf"}
然後第一個是char a[1] = {'a','s','d'},char a[2] =......
char a[ ]={"asdf","asdfsadf"} 這樣是不行的,如果是字元數組,就得用單引號,雙引號是字元串,
char m1[ ]={'a','b','c''\0'} 這個是字元數組,
char m1[ ]={'a','sdfb','c''\0'},這樣是不行的,單引號裡面是一個字元,雙引號才能出現連續字元。
如有不明可以追問。