| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 590 人关注过本帖
标题:求教二维数组首地址的问题?
只看楼主 加入收藏
qq798420453
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-12-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
求教二维数组首地址的问题?
#include <stdio.h>

int main(void)
{
    int a[3][3],i,j,*p_a;

    p_a=a[0];      /*也可换成&a[0][0], a 也相当于数组的首地址,但为什么不能换成 a 呢?*/     

    for(i=0;i<=2;i++)

        for(j=0;j<=2;j++)

            scanf("%d",p_a++);

        p_a=a[0];

    for(i=0;i<=2;i++)

        for(j=0;j<=2;j++)

            printf("%d\n",*p_a++);

    return 0;

}
想了很久也没有想到答案,^_^!

搜索更多相关主题的帖子: include 
2011-12-11 14:13
chenghan818
Rank: 2
等 级:论坛游民
帖 子:27
专家分:22
注 册:2011-5-21
收藏
得分:20 
数据类型不同
p是指向int的指针
a可以看成指向int [3]的指针
int 和 int [3]不是同样的类型,
前者是简单数据类型,后者是由简单数据类型构成的数组类型.
正因为这两种数据的类型不同,所以指向它们的指针的类型也不同.
指针运算是按照指针的类型进行的,
所以p++只使p移动一个整数所占的字节长度,
a++却移动了三个整数所占的字节长度,
由指针运算就可以看出这两个指针不是同类型的.

不过指针间的强制转换一般都还可行,
因而可以如下:
p=(int*)a;

虽然 a 和 a[0] 的类型不同,但它们的值是一样的.

但值一样却未必是同样的数据类型!
 
2011-12-11 16:16
快速回复:求教二维数组首地址的问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031729 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved