在C中對變量進行初始化相對其它高級語言來說,有一些困難.所以簡單總結了幾種變量的初始化方法
普通變量
例如int, char, float等,直接使用最普通的初始化語法
int a = 12;
char b = 'a';
float c = 12.3;
數組
•字符數組
char a[] = {'e', 'x', 'a', 'm', 'p', 'l', 'e', '\0'};
// 最麻煩的賦值方法,還要注意最後面的'\0', 因此不推薦此方法
char b[] = "example";
char *c = "example";
// 相對最優雅的方法
•非字符數組
int a[] = {1, 2, 3, 4, 5};
// 數組分別賦值為 1, 2, 3, 4, 5
int b[5] = {1};
// 初始化一個長度為5的整數數組,第一項賦值為1,其余為0
•多維數組
char *a[] = {
"example1", "example2",
"example3", "example4"
};
// 初始化一個字符串數組
char **b = malloc(4 * sizeof(char *));
// malloc方法需要include "stdlib.h"
b[0] = "example5";
b[1] = "example6";
b[2] = "example7";
b[3] = "example8";
// 在知道字符串個數的情況下,初始化字符串數組
int c[3][5] = {
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15}
};
// 初始化整數二維數組時,分別指定第一維和第二維的長度
int d[][5] = {
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15}
};
// 不指定第一維的長度,編譯器根據第二維的長度自動判斷第一維長度
// int e[][5] = {
int e[3][5] = {
1, 2, 3, 4, 5,
6, 7, 8, 9, 10,
11, 12, 13, 14, 15
};
// 直接當成一個一維數組
結構體
typedef struct Person{
int id;
int age;
char *name;
} Person;
Person people1;
people1.id = 1;
people1.age = 11;
people1.name = "example1";
Person people2 = {
.id = 5,
.age = 14,
.name = "example2"
};
// 類似於JavaScript中的對象字面量方法,但是需要在屬性前面加`點`,
// 賦值操作使用`等號`,而不是JavaScript中的`冒號`
Person *people3 = malloc(sizeof(Person));
// 使用malloc確定指針指向的空間大小,否則會出現`segmentation fault`錯誤
people3->id = 3;
people3->age = 13;
people3->name = "example3";
// 因為people3是指針,所以此處使用箭頭符號`->`,而不用點號`.`