鱼C论坛

 找回密码
 立即注册
查看: 3316|回复: 8

指针三思考题

[复制链接]
发表于 2012-2-16 14:52:56 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 猪好大 于 2012-2-16 18:51 编辑

{
    int *p,z,i,a[3];
    p=a;
    for(i=0; i<3; i++)
    {
        scanf("%d",p++);
    }

    for(i=0; i<3; i++,p++)
    {
        printf("%d\n",*p);
    }
}
在调试看a 是可以得到输入值的。但为何输出P的时候就是一堆乱数呢?

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-16 15:13:24 | 显示全部楼层
输入后p=a+3 p++输出当然是乱码了
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-16 15:18:06 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-16 15:52:13 | 显示全部楼层

int *p,z,i,a[3];
    p=a;
    for(i=0; i<3; i++)
    {
        scanf("%d",p++);
    }
//此时 p = a+3;
    for(i=0; i<3; i++,p++)
    {
        printf("%d\n",*p);
    }
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-16 18:58:53 | 显示全部楼层
本帖最后由 Tazy_ong 于 2012-2-16 19:00 编辑

看一下我的注释,希望对你有帮助!
  1. # include <stdio.h>

  2. int main(void)
  3. {
  4.     int *p,z,i,a[3]; //去掉z吧,这里没有使用到

  5.     p=a;

  6.     for(i=0; i<3; i++)
  7.     {
  8.         //scanf("%d",p++); //p++是自加,加了以后,p的值就改变了,就不再指向数组的首地址了
  9.         scanf("%d", p+i);
  10.     }

  11.     //p=a; //如果上面不想改,那这里就重新给指针p赋值指向数组的首地址,结果都一样
  12.         
  13.     for(i=0; i<3; i++,p++)
  14.     {
  15.         printf("%d\n",*p);
  16.     }
  17.         
  18.     return 0;
  19. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-16 20:40:50 | 显示全部楼层
Tazy_ong 发表于 2012-2-16 18:58
看一下我的注释,希望对你有帮助!

p++自加后不是原来的地址,那么a应该是赋不了值的阿.
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-16 20:47:19 | 显示全部楼层
俺明白了是P++过头了吧.
P++应该可以付值的,但运行三次后没有返回初始地址再加落去就乱码了,版主给支招了
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-16 20:48:33 | 显示全部楼层
Tazy_ong 发表于 2012-2-16 18:58
看一下我的注释,希望对你有帮助!

感谢这位仁兄阿~谢谢你
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-16 22:17:56 | 显示全部楼层
  1. #include <stdio.h>

  2. void main()
  3. {
  4.      int *p,z,i,a[3];
  5.      p=a;
  6.      for(i=0; i<3; i++)
  7.      {
  8.          scanf("%d",p++);
  9.      }

  10.     for(p=a; p<a+3 ; p++)
  11.      {
  12.          printf("%d\n",*p);
  13.      }
  14. }
复制代码
已改过,楼主请看代码。指针法访问数组元素,楼主还不是很清楚。认真看看指针数组那块的只是就知道了。
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-11-11 09:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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