小编Raj*_*raW的帖子

访问指针数组中的元素

我正在尝试使用gcc编译器执行以下C程序.

#include <stdio.h>

int main()
{   
    int *a[] = {1,2,3,4,5,6};

    printf("\narr0=%d\n", *a);
    printf("arr1=%d\n", *(a+1));
    printf("arr2=%d\n", *a+2);
    printf("arr3=%d\n", *a+3);
    printf("arr4=%d\n", *a+4);

    return 0;
}

Output:-
arr0=1
arr1=2
arr2=9
arr3=13
arr4=17
Run Code Online (Sandbox Code Playgroud)

当我跳过*a + 2,*a + 3,*a + 4的括号时,我无法理解发生了什么.对于*a + 2,它操纵为:

= *a+2
= *a+(4*2)           4 ->Size of int
= 1+(8)
So, *a+2 = 9
Run Code Online (Sandbox Code Playgroud)

与其他人一样.

但我期待输出如下.(?)

arr0=1
arr1=2
arr2=3
arr3=4
arr4=5
Run Code Online (Sandbox Code Playgroud)

我知道,我已经以不太好的方式声明指针数组的方式.

任何人都可以解释这里发生了什么?

c arrays pointers

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

arrays ×1

c ×1

pointers ×1