鱼C论坛

 找回密码
 立即注册
查看: 1987|回复: 4

[已解决]关于数组指针的初始化

[复制链接]
发表于 2021-2-7 13:15:03 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 HaibaraA1 于 2021-2-7 16:51 编辑

在百度百科和csdn上看到两种不同的方法,想知道哪种是对的。
百度百科:

int a[4][5];
int (*p)[5]=a;

csdn:
{
int [3][4];
int (*pp)[4];
pp=b;(这里是不是应该pp=&b呢?)
}
最佳答案
2021-2-7 14:03:57
本帖最后由 一叶枫残 于 2021-2-7 14:05 编辑

第二个应该是
int b[3][4];
int (*pp)[4];
pp=b;
关于pp=&b,其实数组的名字b就是数组第一个的地址(&b[0][0]),看下面代码运行的结果你就应该懂了
#include <stdio.h>
int main()
{
        int b[3][4];
        int (*pp)[4];
        pp=b;
        
        printf("b的地址:%x\n" , b);
        printf("b[0][0]的地址:%x\n" , &b[0][0]); 
        printf("指针pp的值:%x\n" , pp);
        
        return 0;
 } 
b的地址:62fde0
b[0][0]的地址:62fde0
指针pp的值:62fde0
其实第一个与第二个本质是相同的,只是定义的数组大小不同且变量名不同而已
加油!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-7 13:23:00 | 显示全部楼层
第二个你漏写了一个数组名

其实,两个是一样的,只是第二个的指针名是 pp 而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-7 14:03:57 | 显示全部楼层    本楼为最佳答案   
本帖最后由 一叶枫残 于 2021-2-7 14:05 编辑

第二个应该是
int b[3][4];
int (*pp)[4];
pp=b;
关于pp=&b,其实数组的名字b就是数组第一个的地址(&b[0][0]),看下面代码运行的结果你就应该懂了
#include <stdio.h>
int main()
{
        int b[3][4];
        int (*pp)[4];
        pp=b;
        
        printf("b的地址:%x\n" , b);
        printf("b[0][0]的地址:%x\n" , &b[0][0]); 
        printf("指针pp的值:%x\n" , pp);
        
        return 0;
 } 
b的地址:62fde0
b[0][0]的地址:62fde0
指针pp的值:62fde0
其实第一个与第二个本质是相同的,只是定义的数组大小不同且变量名不同而已
加油!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-7 14:05:08 From FishC Mobile | 显示全部楼层
第二个的数组定义时数组名不能省略,数组名默认指数组的第一个元素的地址,所以不需要用&取址,其他的都是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-7 14:22:57 From FishC Mobile | 显示全部楼层
我确实漏写了个数组名hhh,感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-31 04:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表