C问题中的字符串

时间:2013-10-01 20:52:38

标签: c arrays string character

我想知道

之间有什么区别
char* str[NUM];
char str[NUM];
char* str;

我的理解是数组定义(例如中间的数组定义)指向第一个值的地址,即str[0]。但我也看到第一行代码表示的符号,即指向数组的指针。这三个是等价的吗?我知道数组定义在堆栈中为NUM个字符设置空间,所以这可能比仅仅

更好
char* str?

由于

4 个答案:

答案 0 :(得分:2)

char* str[NUM];

这是NUM char指针数组

char str[NUM];

这是一个名为str的数组,NUM char长。{/ p>

char *str;

这是指向char

类型的指针

答案 1 :(得分:1)

char* str[NUM];
  • 包含NUM个元素的数组。每个元素都是一个指向字符的指针 通常来说,这可能是一系列字符串 str[0]是第一个字符串 str[1]是第二个字符串等等。

    此数组的任何元素都可以为NULL。

char str[NUM];
  • 包含NUM个元素的数组。每个元素都是一个单独的角色 一般来说,这是一个长度为NUM-1的固定大小的字符串。
    (最后一个位置是字符串空终止符号)
    此字符串不能为NULL。它可以为空(“”),但它始终存在。

char* str;
  • 指向字符的指针 通常来说,这是一个没有特定固定大小的字符串。当您找到空终止符时,您将找到字符串的结尾 此字符串可以为NULL,而不是指向任何内存。

答案 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");