当前位置: 代码迷 >> C语言 >> 重复赋值的指针和*(++p)........................
  详细解决方案

重复赋值的指针和*(++p)........................

热度:181   发布时间:2006-06-19 17:20:47.0
重复赋值的指针和*(++p)........................

#include "stdio.h"
main()
{ int a[]={1,2,3,4,5,6},*p=a;
p="abcdefg";
printf("%c",*(++p));
}

这里测试p的值是c,为什么不是b呢?假如把第三或第四语句删除答案又是b了.
++p的加值与指针类型占用单元数有关?所以+2,而且还是在重复赋值时产生?

搜索更多相关的解决方案: 赋值  指针  

----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-19 09:23:43
SunShining

等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
  得分:0 
引用某人话(略微修改).一个女性的ID.一个美丽的头像.就是在BC驰骋的本钱
----------------解决方案--------------------------------------------------------
int a[]={1,2,3,4,5,6},*p=a;
printf("%c",*(++p));

这里出来的是2.又不是3.

----------------解决方案--------------------------------------------------------
以下是引用JENNET在2006-6-19 17:20:47的发言:

#include "stdio.h"
main()
{ int a[]={1,2,3,4,5,6},*p=a;
p="abcdefg";
printf("%c",*(++p));
}



int 与 char 的字节问题!


----------------解决方案--------------------------------------------------------

楼主定义的指针p是int型,++p指针地址加上sizeof(int),你用的编译器算出来sizeof(int)为2,所以p指向C,你又打印%c,自然就只取指针指向的数的8位。你试试打印%d看看


----------------解决方案--------------------------------------------------------
良好的头饰是成功的一半
以下是引用young在2006-6-19 17:59:52的发言:

楼主定义的指针p是int型,++p指针地址加上sizeof(int),你用的编译器算出来sizeof(int)为2,所以p指向C,你又打印%c,自然就只取指针指向的数的8位。你试试打印%d看看

楼主在TC下出来一个'c'
若在VC下会出来一个'e'
我已经试过了。young好样的,正解。

[此贴子已经被作者于2006-6-19 18:24:37编辑过]


----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-19 12:18:32
穆扬

等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
  得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-19 12:47:01
神vLinux飘飘

等 级:贵宾
威 望:87
帖 子:6111
专家分:49
注 册:2004-7-17
  得分:0 
其实应该支持网络实名制度
----------------解决方案--------------------------------------------------------
  相关解决方案