一个指针问题

lswx 2005-08-10 02:50:21
从I/F传入一个buffer的首地址p_address; 我在文件内定义了一个指针*p;我想p指向buffer的第n个位置,
p = p_address + n -1;
但是一直报错warning: assignment discards qualifiers from pointer target type
请问怎样做可以不产生这个警告?
...全文
1063 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lswx 2005-09-01
  • 打赏
  • 举报
回复
谢谢楼上各位!
我找到问题了,我把一个const类型的指针传入后,对指针做移位操作,所以出现这个警告。
snowbirdfly 2005-08-12
  • 打赏
  • 举报
回复
p_address数据类型与指针类型转换有问题,存在丢失内容的危险
bugebear3 2005-08-12
  • 打赏
  • 举报
回复
p = p_address;
p + n -1就是所需的位置
george3038 2005-08-12
  • 打赏
  • 举报
回复
不用的,指针的 +(N-1) 运算是移动 N-1 个数据位置,也就是自己会考虑数据类型问题...

------------------------------------------------------------------------------

我不这样认为,你比如p = p_address + (n -1)*sizeof(数据类型)中p_address表示的是char类型的地址,p表示的int类型的地址。p_address移动n - 1位和p移动n - 1位肯定是不一样的。

当然要是p和p_address表示相同的类型就无所谓了
ywchen2000 2005-08-11
  • 打赏
  • 举报
回复
不用的,指针的 +(N-1) 运算是移动 N-1 个数据位置,也就是自己会考虑数据类型问题...

//////////////////////////////////
agree
sankt 2005-08-10
  • 打赏
  • 举报
回复
up
jixingzhong 2005-08-10
  • 打赏
  • 举报
回复
warning: assignment discards qualifiers from pointer target type
.....
没有遇到过这个警告...
好象是 参数类型 和 指针类型 不匹配...
jixingzhong 2005-08-10
  • 打赏
  • 举报
回复
回复人: windyloft(大后天) ( ) 信誉:100 2005-08-10 15:36:00 得分: 0

p = p_address + (n -1)*sizeof(数据类型);
---------------------------------------------
不用的,指针的 +(N-1) 运算是移动 N-1 个数据位置,也就是自己会考虑数据类型问题...



XBox360 2005-08-10
  • 打赏
  • 举报
回复
同意楼上,应该注意数据类型
如果是char*就不用*sizeof()了
windyloft 2005-08-10
  • 打赏
  • 举报
回复
p = p_address + (n -1)*sizeof(数据类型);
megaboy 2005-08-10
  • 打赏
  • 举报
回复
p_address是什么类型啊?连这都没交代清楚.........
qfeng_zhao 2005-08-10
  • 打赏
  • 举报
回复
类型有问题吧

69,371

社区成员

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

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