我想知道有什么区别
char* str[NUM];
char str[NUM];
char* str;
我的理解是,像中间这样的数组定义指向第一个值的地址,即str[0]
. 但我也看到了第一行代码所代表的符号,即指向数组的指针。这三个是等价的吗?我知道数组定义在堆栈中为NUM
字符设置了空间,所以这可能比仅仅更好
char* str?
谢谢
char* str[NUM];
这是一个NUM
char
指针数组
char str[NUM];
str
这是一个名为NUM
char
s 长的数组。
char *str;
这是一个指向类型的指针char
char* str[NUM];
str[0]
是第一个字符串。str[1]
是第二个字符串,依此char str[NUM];
char* str;
char* str[NUM];
声明str
为指向 s 的num
指针char
数组。
char str[NUM];
声明str
为num
char
s 的数组。
char* str;
声明str
为指向 a 的指针char
。
您可以在此处测试这些类型的声明。
char* str1[NUM]; // an array of size NUM of pointers to char
char str2[NUM]; // an array of size NUM of char
char* str3; // a pointer to char
这些的用途可能是:
str1[NUM-1] = strdup("foo");
strcpy(str2, "foo");
str3 = strdup("foo");