鱼C论坛

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

[已解决]关于数组指针的概念问题

[复制链接]
发表于 2020-4-8 16:04:07 | 显示全部楼层 |阅读模式

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

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

x

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

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

最佳答案
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)
你看看两个地址的间隔,你会发现不同的意义

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-8 16:06:33 | 显示全部楼层
我理解的是我们定义的这个数组的指针,就是数组名指针,就是(数组第一元素的地址)的地址,所以访问第一个元素就要用*(*p)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-8 16:13:03 | 显示全部楼层
这里才看出差别。他们地址一样,但是用法不一样。是这么个事吗?
#include<stdio.h>
int main()
{
        int nums[10]={1,2,3,4,5,6,7,8,9,10};
        int (*p)[10]=&nums;
        printf("\n%d\n",*(*p+1));
        printf("%d\n",*(nums+1));
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)
你看看两个地址的间隔,你会发现不同的意义

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-8 16:46:07 | 显示全部楼层
4goodworld 发表于 2020-4-8 16:35
你要明白
p是数组地址
nums是数组首元素地址

好我,我大概明白了。谢谢。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 09:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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