C語言中的初始化問題

2021-09-07 18:35:33 字數 948 閱讀 9537

經常在c語言工程中,尤其是比較大的程式,執行過程中會出現由於記憶體或堆疊導致的各種問題,輸出錯誤或執行崩潰~~

1.字串陣列的初始化

(1) char str[10]="";

(2) char str[10]=;

(3) char str[10]; str[0]=』\0』;

2.字元陣列的初始化

int a[5] = ;

錯誤:int a[5] = ; //只有第乙個元素賦值為1,其他都為0.

遵循規則:陣列初始化列表中的元素個數小於指定的陣列長度時,不足的元素補以預設值。

如果想在陣列建立結束後再對其進行初始化,可以使用c函式memset(),但是memset的使用有個大問題,就是它只對char型別的陣列管用:

char a[10];

memset(a, 0, 10);

如果將上面的a陣列換成int或其他型別的,就會出現問題,因為memset的內部實現是以位元組為單位進行賦值的,int 型別(4位元組)大於乙個位元組。

3. 指標的初始化

(1)一般用null或空指標常量,如:int *p = null;char *p = 0; 或 float p = 0;

(2)取乙個物件的位址然後賦給乙個指標,如:int i = 3; int ip = &i;

(3) 將乙個指標常量賦給乙個指標,如:long *p = (long *) 0x fffffff0;

(4)將乙個t型別陣列的名字賦給乙個相同型別的指標,如:

char ary[100]; char *cp = ary;

(5)將乙個指標的位址賦給乙個指標,如:

int i = 3;int *ip = &i;int **pp = &ip;

(6) 將乙個字串常量賦給乙個字元指標,如:char *cp = 「abc」;

C語言中結構體的初始化

大全 建議在變數定義的時候進行初始化,但是很多人,特別是新人對結構體或者結構體陣列定義是一般不會初始化,或者不知道怎麼初始化。1 初始化 typedef struct test t test t test t gst 可以初始化,設定i為1,s為乙個字串.test t gst 初始化個數少於實際個數...

c語言中結構體的初始化

struct initmember struct initmember test 需要注意對應的順序,不能錯位。struct initmember test test.first 10 test.second 3.141590 test.third method two test.four 0.25...

C語言malloc初始化問題

博主在刷leetcode的時候經常頭疼的是陣列初始化問題。尤其是最近,經常會遇到陣列訪問溢位的問題。大意就是說訪問陣列下標越界了,簡直頭疼得不得了。今天就結合例子來總結一下 1374.生成每種字元都是奇數個的字串 假如我們這樣的話 注意看malloc那一行 char generatethestrin...