林小某 发表于 2021-3-10 10:04:18

指针与二维数组的问题

本帖最后由 林小某 于 2021-3-10 10:12 编辑

#include<stdio.h>

int main()
{
        int array={0};
        int i,j,j, k = 0;

        for(i = 0; i < 5; i++)
        {
                for (j = 0; j<4; j++)
                {
                        array=k++;
                }
        }

        printf("array = %d\n", *array);
        printf("array = %d\n", array);
}

输出都为4;

为什么第一个输出中要array前面要加一个取值操作符,第二个中不用;
第一个去掉符号后是一个乱值,
这是为什么!

array不应该也是一个地址吗,直接输出确实一个值这是为啥?

巴巴鲁 发表于 2021-3-10 10:44:02

array储存的是一个值
对于一维数组,*array和array表示的都是一个值,
对于二维数组:*array == array,*array == array,因为指针相当于数组的首地址

s-j-y 发表于 2021-3-10 10:54:55

第一个array如果不加取值操作符表示的是一个一维数组吧(我不太确定哈……)
a存了4个一维数组,是一维数组的名称,首指向第一行一维数组
a是第i行一位数组的名称,首指向一位数组的第一个数。
*a指向一维数组第一个
页: [1]
查看完整版本: 指针与二维数组的问题