【发布时间】:2021-07-28 21:19:28
【问题描述】:
在 C 中
int *arr[]
显然是一个指向 int 的指针数组,但用于
char *arr[]
是指向字符串的指针数组,这是怎么回事。那么编译器如何区分这两者。我读了这个问题-
Char* array of chars, but int* not array of ints?
但是对于指向字符串的指针数组,我们谈论的是编译器必须为字符串单独创建的大内存,然后编译器是否会以某种方式分别处理变量?
【问题讨论】:
-
char *arr[]不必是指向字符串的指针数组,因为内容可能是NULL或指向非空终止数据的指针。它是一个指向char的指针数组。 -
@MikeCAT 我不明白你所说的非空终止数据的意思。是的,它应该只创建指向 char 而不是字符串的指针数组
-
C 没有名为
string的类型。字符串是一个字符数组。与任何数组一样,指向字符串的指针也是指向其第一个元素的指针。 -
实际上,
char **array[]将是一个指向字符串的指针数组。char *array[]是一个字符串数组,因为正如其他人指出的那样,C 中的字符串只是char*。