2316829671 发表于 2019-4-21 23:16:26

关于数组和指针的一些问题

图片中红圈部分为什么是4


源代码#include <stdio.h>

int main(void)
{
    int a = {0};
    int i;

    for(i = 0; i < 2; i++)
    {
      printf("%4u %4u %4u %4u %4u\n", a, *(a + i), a + i, a, &a);
      printf("%6u %6u %6u %6u %6u\n", sizeof(a), sizeof(*(a + i)), sizeof(a + i), sizeof(a), sizeof(&a));
    }

    return 0;
}

82457097 发表于 2019-4-22 08:10:59

本帖最后由 82457097 于 2019-4-22 08:15 编辑

4两个都是指针的尺寸
16是二维数组一个维度的尺寸 有四个int
48是整个二维数组的尺寸
不对请指正

82457097 发表于 2019-4-22 08:29:46

a是第一行第一个元素的地址 代表整个二维数组
*(a+i)是第i+1行第一个元素的地址 也代表a的第i行
a+i代表第一行第i+1个元素的地址
ai代表a的i+1行第一个元素的地址 也代表a的第i+1行
&ai代表a的i+1行第一个元素的地址
不对请指正
页: [1]
查看完整版本: 关于数组和指针的一些问题