在分配/打印时为什么我不必取消引用 c 中的数组指针?

问题描述 投票:0回答:1
#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]);
}
arrays c pointers
1个回答
0
投票

当您在指针后面添加索引运算符“[]”时,您是在告诉编译器“嘿,获取这个指针,然后使用 [] 括号内的值对其进行指针算术运算,并取消引用它指向的地址”。

换句话说 - 当您添加索引运算符“[]”时,您的指针将被视为常规变量,并且不需要额外的解引用运算符。它已经取消引用了。

© www.soinside.com 2019 - 2024. All rights reserved.