c - 试图理解数组符号

标签 c arrays

在下面的代码中:

int main()
{

    int i = 15, j = 1;
    int *a[] = {&i, &j};
    printf("%d", (*a)[0]);
    return 0;

}

(*a)[0] 的输出是 15(i 的值)但是当我尝试检查 (*a)[1] 它给出了一个垃圾值。我希望相同的表达式适用于数组中的所有条目,但它仅适用于数组中的第一个元素。

最佳答案

在这里你已经声明了指针数组。首先你应该知道数组的各种表示。 a[i] 是怎么计算的? a 给你数组的基址。

a[ i ]  = *(a+i)
(*a)[0] = *(*a+0)
(*a)[1] = *(*a+1)

Thus the value of (*a)[0] = *(address of i + 0) = Value of i  
And the value of  (*a)[1] = *(address of i + 1) = value at the location of (add of i + 2) i.e. a garbage value.

在上面的问题中,如果使用 *( a[ 0 ] ) 和 *( a[1] ) 就可以正确获取值。

关于c - 试图理解数组符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21480850/

相关文章:

php - Laravel - 如何按 ID 升序对对象数组进行排序

javascript - ES6 类 - 映射变量数组

c# - 从 C# 字符串属性获取数组

java - 异常和数组的问题

arrays - 如何在 pl/pgsql 中获取 foreach 中的当前键?

c - C中Hashtable的插入函数

c++ - C 和 C++ 中空结构的大小

C 根据用户输入打印出缩写词

c++ - C 和 C++ 中 char 的区别?

c++ - 如何准备在单个 Windows 环境中生成 .dll 和 unix .so 的构建作业?