gpt4 book ai didi

c - 为什么我不能将 real[0] 分配给 x 的地址

转载 作者:行者123 更新时间:2023-11-30 20:01:42 24 4
gpt4 key购买 nike

当我将 char* 更改为 char** 时,代码可以工作,但我无法理解为什么无法将 real[0] 分配给地址。

当我分配10*sizeof(char)内存时,是不是意味着我可以使用real[0]real[9]?

我明白 char** real - 使用 with 后如下

char** real = malloc(sizeof(char*) * 10);

这样就解决了问题。它分配 10 个 char*,因此我可以分配 xy 的地址,并且在 的情况下出于同样的原因>char* 我无法分配地址,因为它仅适用于 char 字符?

最后,我想知道什么时候可以使用 real[0]real[1] 等?

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

int main(){

char* real = malloc(sizeof(char) * 10);

char x = 'a';
char y = 'b';

real[0] = &x;
real[1] = &y;

printf("%c %c\n",x,y);
printf("%x\n",real[0]);
printf("%x\n",real[1]);
printf("%d\n",sizeof(&x));
printf("%d\n",sizeof(&y));

return 0;
}

最佳答案

real 是一个 char*,因此 real[0] 是一个 char。您可以执行real[0] = x;。另外,如果您确实想保存指向 x 的指针,则需要将 real 设为 char** 并相应地处理分配。

关于c - 为什么我不能将 real[0] 分配给 x 的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27641217/

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