能否将这些指针全部转化为指针数组?

问题描述 投票:0回答:1

我有这样的指针。我不知道我这样做是否正确。我不知道如何为它们分配内存。也许电脑会自动分配内存?

    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);
c arrays pointers
1个回答
2
投票

我有这样的指针。我不知道我这样做是否正确。我不知道如何为它们分配内存。也许计算机会自动分配内存?

char *d = "Array1";
char *d1 = "Array2";
char *e = "Sum array";

编译器会分配一个数组 char 的静态存储时间,并将变量初始化为指向这些字符串的第一个字符。char 数组。

是否可以做一个这样的指针数组。

char *names[] = {"Array1","Array2","Sum array"}

是的 (尽管声明中需要分号), 编译器会设置这个数组的长度。names 数组自动变为3,以匹配初始化器的数量,因为没有明确指定长度。

和之前一样,编译器将分配一个数组的 char 对每个字符串文字进行静态存储持续时间。编译器将初始化每个元素的 names 数组指向那些 char 数组的内容。

由于这些字符串字元的内容与用于初始化 d, d1e 变量,编译器 可能 重叠了相同字符串字元的存储空间。这是好的,因为C代码不能修改这些字符串字元占用的存储空间。

如果 names[]自动 存储持续时间(在函数中),你可以如下声明和初始化它,假设 d, d1e 已经指向了正确的字符串字元。

char *names[] = {d, d1, e};

那么 names[] 将指向完全相同的字符串字面意义 char 阵列存储作为 d, d1e.

当我调用一个函数时,如何使用这个指针呢?

我通常使用(第二个参数是我的指针)。

writeArray(wc, e, n, arr2);

所以当我使用一个指针数组时,会是这样的吗?

writeArray(wc, name[2], n, arr2);

是的,就是这样的。


2
投票

是否可以做成这样的指针数组呢?

是的,是这样的。

所以当我使用一个指针数组时,它将会是这样的东西?

是的

© www.soinside.com 2019 - 2024. All rights reserved.