【发布时间】:2020-10-07 22:07:07
【问题描述】:
我是 C 新手,无法理解指针。我感到困惑的部分是关于char * 和int *。
比如我们可以直接给char赋值一个指针,比如
char *c = "c"; 不会出错。
但是,如果我像刚才那样为 int 分配一个指针,例如int * a = 10;,
它会出错。我需要在内存中腾出一个额外的空间来为 int 分配一个指针,
点赞int *b = malloc(sizeof(int)); *b = 20; free(b);...
谁能告诉我为什么?
【问题讨论】:
-
"this is not a char",因此与尝试将 int 分配给 int* 相比是不可比的;与char* ch = 'c'相比,这应该说明为什么它通常没有多大意义(并且是类型错误),需要更大的锤子来用力。 -
这能回答你的问题吗? String literals: pointer vs. char array
-
顺便说一句,避免
pointer = malloc(sizeof(pointee_type));,因为它很容易出错。首选不重复类型的pointer = malloc(sizeof *pointer);。