zhanjunlihai 2023-11-28 16:50 采纳率: 24.7%
浏览 3
已结题

指针与数组指向的首地址

#include <stdio.h>
int main() 
{ 
    int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 
    int *p; 
    for (p=a[0];p<a[0]+12;p++) 
    printf("%4d",*p); 
}

这个程序中,a和 a[0]的值相同,但类型不同。
为什么?都是什么类型的 不是很懂。

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-28 18:44
    关注

    【以下回答由 GPT 生成】

    在C语言中,变量a是一个二维整型数组,它的类型是int[][4]。而变量a[0]是数组a的第一行(也可以看作是一个一维数组),它的类型是int[4]。

    具体来说,a是一个有3行4列的二维数组,每个元素都是一个int类型的整数。a[0]是数组a的第一行,也就是长度为4的一维数组。a[0]的值是{1, 2, 3, 4}。

    为了更好地理解这个程序,我们可以分析一下程序的运行过程:

    1. 首先定义了一个二维数组a,并初始化为{{1,2,3,4},{5,6,7,8},{9,10,11,12}}。
    2. 定义了一个指针变量p,并将其指向数组a的第一个元素a[0][0]。
    3. 进入for循环,在循环中,将指针p递增,然后输出指针p所指的元素的值。
    4. 循环执行12次,每次输出一个元素的值,直到指针p指向了a[2][3]的下一个元素,即循环结束。

    总结来说,变量a和a[0]的类型都是整型数组,但是它们分别代表了二维数组a和一维数组a[0]的不同维度。而a[0]的值就是a这个二维数组的第一行。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月7日
  • 已采纳回答 11月29日
  • 创建了问题 11月28日