当我将char*
更改为char**
时,代码有效,但我不明白为什么无法将real[0]
分配给地址。
当我分配10*sizeof(char)
内存时,这并不意味着我可以使用real[0]
到real[9]
吗?
我理解char** real
-在按以下方式使用后
char** real = malloc(sizeof(char*) * 10);
这样就解决了问题。它分配10个
char*
,因此我可以分配x
和y
的地址,并且出于相同的原因,在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/