| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 888 人关注过本帖
标题:C指针的传递问题
取消只看楼主 加入收藏
qingke
Rank: 1
等 级:新手上路
帖 子:11
专家分:3
注 册:2011-2-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
C指针的传递问题
p0=p;
*p=*(p+1);
*(p+1)=*p0;
当我这样子做的时候,结果应该P最终的指向的地址不变,但是该地址内容是原来p+1的内容,而p+1的指针内容是原来p的。
但是我运行的结果确实p跟p+1指针内容都是p+1的内容。
而当我用的是
p0=p;
p=(p+1);
(p+1)=p0;
后面的这种写法就出现错误 error C2106: “=”: 左操作数必须为左值
在(p+1)=p0那行的样子

[ 本帖最后由 qingke 于 2011-2-24 20:35 编辑 ]
搜索更多相关主题的帖子: 确实 
2011-02-24 16:04
qingke
Rank: 1
等 级:新手上路
帖 子:11
专家分:3
注 册:2011-2-24
收藏
得分:0 
回复 楼主 qingke
p0=p;
p=(p+1);
(p+1)=p0;
后面的这种写法就出现错误 error C2106: “=”: 左操作数必须为左值
在(p+1)=p0那行的样子
2011-02-24 20:33
qingke
Rank: 1
等 级:新手上路
帖 子:11
专家分:3
注 册:2011-2-24
收藏
得分:0 
回复 2楼 犬虫门心
p0=p;
p=(p+1);
(p+1)=p0;
后面的这种写法就出现错误 error C2106: “=”: 左操作数必须为左值
在(p+1)=p0那行的样子
2011-02-24 21:04
qingke
Rank: 1
等 级:新手上路
帖 子:11
专家分:3
注 册:2011-2-24
收藏
得分:0 
回复 12楼 丞相杀手
明白了,谢谢!
但是我用

    *p0=*p;
    *p=*(p+1);
    *(p+1)=*p0;
这样的话
*(p+1)之前也是没有声明,但是用VS2010编译没有出现语法错误
2011-02-24 21:40
qingke
Rank: 1
等 级:新手上路
帖 子:11
专家分:3
注 册:2011-2-24
收藏
得分:0 
回复 15楼 丞相杀手
p0=0;
 p1=0;
······
p1=(p+1);
p0=p;
p=(p+1);
p1=p0;
加上一个p1
然后这样就没问题了吧
不过这样还是没达到我想要的交换p跟p+1的值
而一旦我使用
struct student *p;
p=stu  //stu是我已经定义的一个结构体数组名
 p0=0;
 p1=0;
*p1=*(p+1);
*p0=*p;
*p=*(p+1);
*p1=*p0;
虽然程序可以编译但是在运行的时候当运行到*p1=*(p+1);这一步的时候系统就会提示内存冲突
我已经给p1赋值了,但是为什么还是会出问题呢?
其中p是指向一个结构体数组的首位,那p+1应该是指向stu[1]的,那这样子p1指向的内容应该是stu[1]的内容,可是运行的时候为什么p1是错误的指针呢?

[ 本帖最后由 qingke 于 2011-2-24 22:37 编辑 ]
2011-02-24 22:27
快速回复:C指针的传递问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018049 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved