鱼C论坛

 找回密码
 立即注册
查看: 2558|回复: 14

[已解决]指针s + i指向的问题

[复制链接]
发表于 2017-12-20 18:40:36 | 显示全部楼层
本帖最后由 新建word 于 2017-12-20 18:42 编辑

首先  抛开 const 常量 只说  指针的问题

void print_array (int *const s,int n);
这是你函数 原型  
其中变量s因为他是指针 他储存的是内存地址而非数据 。
for (i = 0;i < n;i++)
                printf ("%d %d\n",*(s + i),s + i);
*(s+i)  其中有小括号, 默认计算机会先执行括号中的表达式,计算完内存地址的位置 ,进行取数据,接着由printf格式化成%d数据打印,而后面 你没有取数据运算 所以 打印出 内存中的地址;


*符号代表的是当前地址的数据(默认是二进制哈, 因为计算机只能识别  0和1。)



对了如果 还是不是很懂的话, 建议你 拷贝该段代码 编译下, 之后debug 进行调试, 同时观察 每个变量的内存地址;

指针 也是变量, 不过储存的是 内存的地址罢了。







小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-22 23:15:28 | 显示全部楼层
本帖最后由 新建word 于 2017-12-23 00:06 编辑
fdsf 发表于 2017-12-20 20:13
单步调试,我是调试过的。
您说的我是仔细的想过。
第一次s 指向的是&s【0】= 0x123;之后执行s+ 1.


        char a[10]={'1','2','3','4','5','6','7','8','9'};
        char *b ="123456789";
        printf("a=0x%X\n&a=0x%X\n*a=0x%X\nb=0x%X\n&b=0x%X\n*b=0x%X\n",a,&a,*a,b,&b,*b);


       
        system("pause");


不说了  指针和变量真的 解释不清楚!


反正我理解的 意思  指针 也是变量 只不过储存的是  数据的  内存地址


你看看          &b 取出的 内存地址 上的数据是什么!







小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-19 03:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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