C——指向指针的指针与指针数组
C -- pointers to pointers VERSUS array of pointers
在C中,为什么我不能写:
char **expectedPINs01 = { "0", "5", "7", "8", "9" };
因为我得到了:
warning: initialization of ‘char **’ from incompatible pointer type
‘char *’
但是可以这样写:
char *expectedPINs01[] = { "0", "5", "7", "8", "9" };
有什么区别?
当你写 char **
时,你得到的 space 就足够一个指针了。如果你想让它表现得像一个数组,那么你必须 malloc
space 足以满足数组的大小并填写条目。
当你写 char *x[5]
时,你得到足够的 space 5 个指针。
当你使用初始化 shorthand 时,你可以省略 5
因为编译器可以从你的初始化程序中看到你希望有 5 个指针的 space,并且它为它们保留足够的 space,然后使用初始化程序 shorthand 为您填充它们。
在C中,为什么我不能写:
char **expectedPINs01 = { "0", "5", "7", "8", "9" };
因为我得到了:
warning: initialization of ‘char **’ from incompatible pointer type ‘char *’
但是可以这样写:
char *expectedPINs01[] = { "0", "5", "7", "8", "9" };
有什么区别?
当你写 char **
时,你得到的 space 就足够一个指针了。如果你想让它表现得像一个数组,那么你必须 malloc
space 足以满足数组的大小并填写条目。
当你写 char *x[5]
时,你得到足够的 space 5 个指针。
当你使用初始化 shorthand 时,你可以省略 5
因为编译器可以从你的初始化程序中看到你希望有 5 个指针的 space,并且它为它们保留足够的 space,然后使用初始化程序 shorthand 为您填充它们。