我想知道
之间有什么区别char* str[NUM];
char str[NUM];
char* str;
我的理解是数组定义(例如中间的数组定义)指向第一个值的地址,即str[0]
。但我也看到第一行代码表示的符号,即指向数组的指针。这三个是等价的吗?我知道数组定义在堆栈中为NUM
个字符设置空间,所以这可能比仅仅
char* str?
由于
答案 0 :(得分:2)
char* str[NUM];
这是NUM
char
指针数组
char str[NUM];
这是一个名为str
的数组,NUM
char
长。{/ p>
char *str;
这是指向char
答案 1 :(得分:1)
char* str[NUM];
str[0]
是第一个字符串
str[1]
是第二个字符串等等。char str[NUM];
char* str;
答案 2 :(得分:1)
char* str[NUM];
将str
声明为num
指针char
的数组。
char str[NUM];
将str
声明为num
char
的数组。
char* str;
将str
声明为指向char
的指针。
您可以测试这些类型的声明here。
答案 3 :(得分:0)
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");