gpt4 book ai didi

c - 如何将二维字符串数组分配给字符指针数组?

转载 作者:太空宇宙 更新时间:2023-11-04 03:34:05 25 4
gpt4 key购买 nike

我一直在尝试将 char words[x][y] 分配给 char* pointer[x]。但是编译器给我一个错误

array type 'char *[5]' is not assignable pointer = &words[0]

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(){
char words[5][10]={"Apple", "Ball", "Cat", "Dog", "Elephant"};
char *pointer[5];
pointer = &words[0];
char **dp;
dp = &pointer[0];

int n;
for(n=0; n<5; n++){
printf("%s\n", *(dp+n));
}
return 0;
}

但是代码在运行的时候

char *pointer[5]={"Apple", "Ball", "Cat", "Dog", "Elephant"};
char **dp;
dp = &pointer[0];

我只需要将二维数组正确分配给指针数组!!

最佳答案

不幸的是,您无法按照自己的意愿去做。 char words[5][10] 不会将指针本身存储在任何地方,它实际上是一个包含 50 个字符的数组。 sizeof(words) == 50

在内存中,它看起来像这样:

'A','p','p','l','e','\0',x,x,x,x,'B','a'...

这里没有地址。当您执行 words[3] 时,它只是 (words + 3) 或 (char *)words + 30

另一方面,char *pointer[5] 是一个包含五个指针的数组,sizeof(pointer) == 5*sizeof(char*)

因此,您需要通过计算偏移量手动填充您的指针 数组。像这样:

for (int i = 0; i < 5; i++) pointer[i] = words[i];

关于c - 如何将二维字符串数组分配给字符指针数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33968018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com