我有这样的指针。我不知道我这样做是否正确。我不知道如何为它们分配内存。也许电脑会自动分配内存?
char *d = "Array1";
char *d1 = "Array2";
char *e = "Sum array";
能否做一个这样的指针数组。
char *names[] = {"Array1","Array2","Sum array"}
当我调用一个函数时,如何使用这些指针?
我通常使用(第二个参数是我的指针)。
writeArray(wc, e, n, arr2);
所以当我使用指针数组的时候 会是这样的吗?
writeArray(wc, name[2], n, arr2);
我有这样的指针。我不知道我这样做是否正确。我不知道如何为它们分配内存。也许计算机会自动分配内存?
char *d = "Array1"; char *d1 = "Array2"; char *e = "Sum array";
编译器会分配一个数组 char
的静态存储时间,并将变量初始化为指向这些字符串的第一个字符。char
数组。
是否可以做一个这样的指针数组。
char *names[] = {"Array1","Array2","Sum array"}
是的 (尽管声明中需要分号), 编译器会设置这个数组的长度。names
数组自动变为3,以匹配初始化器的数量,因为没有明确指定长度。
和之前一样,编译器将分配一个数组的 char
对每个字符串文字进行静态存储持续时间。编译器将初始化每个元素的 names
数组指向那些 char
数组的内容。
由于这些字符串字元的内容与用于初始化 d
, d1
和 e
变量,编译器 可能 重叠了相同字符串字元的存储空间。这是好的,因为C代码不能修改这些字符串字元占用的存储空间。
如果 names[]
有 自动 存储持续时间(在函数中),你可以如下声明和初始化它,假设 d
, d1
和 e
已经指向了正确的字符串字元。
char *names[] = {d, d1, e};
那么 names[]
将指向完全相同的字符串字面意义 char
阵列存储作为 d
, d1
和 e
.
当我调用一个函数时,如何使用这个指针呢?
我通常使用(第二个参数是我的指针)。
writeArray(wc, e, n, arr2);
所以当我使用一个指针数组时,会是这样的吗?
writeArray(wc, name[2], n, arr2);
是的,就是这样的。
是否可以做成这样的指针数组呢?
是的,是这样的。
所以当我使用一个指针数组时,它将会是这样的东西?
是的