#include <stdio.h>
void main(){
int *i = (int *) malloc(12);
*i[0] = 1;
printf("%d", *i[0]);
}
i
应该是一个指针。那么为什么这段代码不起作用呢?
为什么这段代码👇可以工作?
void main(){
int *i = (int *) malloc(12);
i[0] = 1;
printf("%d", i[0]);
}
当您在指针后面添加索引运算符“[]”时,您是在告诉编译器“嘿,获取这个指针,然后使用 [] 括号内的值对其进行指针算术运算,并取消引用它指向的地址”。
换句话说 - 当您添加索引运算符“[]”时,您的指针将被视为常规变量,并且不需要额外的解引用运算符。它已经取消引用了。