指针与地址问题,求救!

python与大数据分析
博客专家认证
2003-07-01 11:01:09
#include <stdio.h>
#define SIZE 4
void printPtr(char *);
main()
{
int x=7,*xPtr;
char arrays[SIZE]={'a','b','c','\0'},*arraysPtr;
arraysPtr=arrays;
printPtr(arraysPtr);
printPtr(arrays);
}
void printPtr(char *ptr)
{
for(;*ptr!='\0';ptr++)
printf("%3c",*ptr);
printf("\n");
}

我在调试过程中,发现ptr="abc"

第一次循环ptr="abc"

第二次循环ptr="bc"

第三次循环ptr="c"

按理说应该是array[SIZE]的地址才对呀!
...全文
104 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我知道了谢谢!
zteliubin 2003-07-01
  • 打赏
  • 举报
回复
还没有明白,你调试的时候,调试窗口中打印的是ptr指向的内容!
ptr的值,你可以直接打印出来看

printf("%d --> %s",ptr,ptr);//同时打印ptr和ptr指向的内容!
bigtea 2003-07-01
  • 打赏
  • 举报
回复
to 楼主,
改成printf("%3c,%x",*ptr,ptr);
就知道了,你在TC2中调试时因为编译系统预知你的ptr指针变量指向char类型变量,所以象
printf("%s",ptr);这样给你显示出来。
  • 打赏
  • 举报
回复
我也是这么认为的,但调试中却发现实际是
第一次循环ptr="abc"

第二次循环ptr="bc"

第三次循环ptr="c"
lzh7800 2003-07-01
  • 打赏
  • 举报
回复
第一次循环,ptr是指向"abc"的首地址,即'a'的地址,*ptr='a';
第二次循环,ptr是指向"bc"的首地址,即'b'的地址,*ptr='b';
第三次循环,ptr是指向"c"的首地址,即'c'的地址,*ptr='c'
  • 打赏
  • 举报
回复
void printPtr(char *ptr)
{
for(;*ptr!='\0';ptr++)
{
printf("%3c",*ptr);
printf("%6p",ptr);
}
printf("\n");
}
输出的是 a FFA6 b FFA7 c FFA8
因此我想Ptr不应该是
第一次循环ptr="abc"

第二次循环ptr="bc"

第三次循环ptr="c"

而是
第一次循环ptr=FFA6
第二次循环ptr=FFA7
第三次循环ptr=FFA8

  • 打赏
  • 举报
回复
兄弟用的turbo c2.0调试的
playboyxp 2003-07-01
  • 打赏
  • 举报
回复
我在VC下调试的结果
a b c
a b c
有什么不对吗?
gunsrose 2003-07-01
  • 打赏
  • 举报
回复
指针移动!!!!!!!
hessian 2003-07-01
  • 打赏
  • 举报
回复
用 printf("%d",(int)ptr);就可以显示地址了吧!
hessian 2003-07-01
  • 打赏
  • 举报
回复
事实上不是你想象中的那样。
首先两次printPtr调用时是将原来的实参的值(arraysPtr所指的地址,arrays的首地址)Copy一份给了函数的参数ptr。此时ptr按函数参数的声明只是一个指针,可以自由的做加减运算,无关数组首地址不可以重新赋值的限制。所以你在循环中对它做了++运算后就指向数组的下一个元素了。再将它输出,字符个数就越来越少了。
arfi 2003-07-01
  • 打赏
  • 举报
回复
用vc调试的吗?你应该看到类似0x0065fdec "abc"的东西,前面的数字就是地址了,后面是该地址中的内容。
Beover1984 2003-07-01
  • 打赏
  • 举报
回复
有点不明白你的意思
zteliubin 2003-07-01
  • 打赏
  • 举报
回复
因为ptr是char *,所以你看到的ptr分别就是"abc","bc","c"了。
但是你的输出应该是:
a b c
abc

没有问题呀,你如果看*ptr的值就没有问题了!

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧