HaibaraA1 发表于 2021-2-7 13:15:03

关于数组指针的初始化

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

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

int a;
int (*p)=a;

csdn:
{
int ;
int (*pp);
pp=b;(这里是不是应该pp=&b呢?)
}

风过无痕1989 发表于 2021-2-7 13:23:00

第二个你漏写了一个数组名

其实,两个是一样的,只是第二个的指针名是 pp 而已

一叶枫残 发表于 2021-2-7 14:03:57

本帖最后由 一叶枫残 于 2021-2-7 14:05 编辑

第二个应该是
int b;
int (*pp);
pp=b;
关于pp=&b,其实数组的名字b就是数组第一个的地址(&b),看下面代码运行的结果你就应该懂了
#include <stdio.h>
int main()
{
        int b;
        int (*pp);
        pp=b;
       
        printf("b的地址:%x\n" , b);
        printf("b的地址:%x\n" , &b);
        printf("指针pp的值:%x\n" , pp);
       
        return 0;
}
b的地址:62fde0
b的地址:62fde0
指针pp的值:62fde0
其实第一个与第二个本质是相同的,只是定义的数组大小不同且变量名不同而已
加油!!

Minecraft程序猿 发表于 2021-2-7 14:05:08

第二个的数组定义时数组名不能省略,数组名默认指数组的第一个元素的地址,所以不需要用&取址,其他的都是一样的

HaibaraA1 发表于 2021-2-7 14:22:57

我确实漏写了个数组名hhh,感谢
页: [1]
查看完整版本: 关于数组指针的初始化