alex5153 发表于 2020-4-8 16:04:07

关于数组指针的概念问题


新定义 一个数组指针指向数组整体。那么怎么打印这个地址呢?这个地址跟数组名,数组第一元素地址应该不相同啊。
难道要用        printf("\n%p\n",p);
#include<stdio.h>]
int main()
{
        int nums={1,2,3,4,5,6,7,8,9,10};
        int (*p)=&nums;
        int i=0;
        for(i=0;i<=9;i++)
        {
                printf("%d,",*(*p+i));
        }
        printf("\n%p\n",p);
        printf("%p\n",&nums);
        printf("%p\n",nums);
        printf("%p\n",&nums);
        return 0;
}

这个代码打印的四个地址都一样。

alex5153 发表于 2020-4-8 16:06:33

我理解的是我们定义的这个数组的指针,就是数组名指针,就是(数组第一元素的地址)的地址,所以访问第一个元素就要用*(*p)

alex5153 发表于 2020-4-8 16:13:03

这里才看出差别。他们地址一样,但是用法不一样。是这么个事吗?
#include<stdio.h>
int main()
{
        int nums={1,2,3,4,5,6,7,8,9,10};
        int (*p)=&nums;
        printf("\n%d\n",*(*p+1));
        printf("%d\n",*(nums+1));
        return 0;
}

4goodworld 发表于 2020-4-8 16:35:58

alex5153 发表于 2020-4-8 16:13
这里才看出差别。他们地址一样,但是用法不一样。是这么个事吗?
#include
int main()


你要明白
p是数组地址
nums是数组首元素地址
两个值相同但意义不一样
你要问区别,你可以试试
printf("%d",p+1)
printf("%d",nums+1)
你看看两个地址的间隔,你会发现不同的意义

alex5153 发表于 2020-4-8 16:46:07

4goodworld 发表于 2020-4-8 16:35
你要明白
p是数组地址
nums是数组首元素地址


好我,我大概明白了。谢谢。。。
页: [1]
查看完整版本: 关于数组指针的概念问题