經常在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...