| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 753 人关注过本帖
标题:二级指针的一个问题
只看楼主 加入收藏
黄昏黄昏
Rank: 2
等 级:论坛游民
帖 子:49
专家分:41
注 册:2013-1-10
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:9 
二级指针的一个问题
{
    char* p,*q;
    if(!(q=(char*)malloc(NODESIZE))
    {
        printf("error");
        return -1;
    }
    ······
    *(char**)p=q;p=q;
    ······
}
这几句代码是截取出来的,创建链表用的,p是节点,q是新开辟的节点指针,
*(char**)p=q;p=q;  这两句代码连在一起是什么意思?前者的意思是相当于把q的值赋给p吗?  强制转换是临时的,但是这里第一句强制转换p为char**,那么到了p=q这里的p是char**还是char*呢?

[ 本帖最后由 黄昏黄昏 于 2013-3-11 19:10 编辑 ]
搜索更多相关主题的帖子: return 
2013-03-11 19:06
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:3 
写错了吧
为什么把一个char * 转成一个char **?

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-03-11 19:10
黄昏黄昏
Rank: 2
等 级:论坛游民
帖 子:49
专家分:41
注 册:2013-1-10
收藏
得分:0 
回复 2楼 yuccn
没有写错。。教学视频里的,而且还在解释,不过听不明白

得不到的永远在骚动,被偏爱都有恃无恐
2013-03-11 19:11
你不想去那儿
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:56
专家分:114
注 册:2012-9-21
收藏
得分:3 
是不是对二级指针取内容作为左值,将q赋值
2013-03-11 20:21
小xiong
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:388
专家分:1722
注 册:2013-2-8
收藏
得分:3 
强制转换为一级指针的指针,再取其内容,最后赋值。呵呵
2013-03-13 18:05
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:3 
以下是引用小xiong在2013-3-13 18:05:28的发言:

强制转换为一级指针的指针,再取其内容,最后赋值。呵呵
似乎这样理解不行...强制转换是(数据类型)数据对象
而上面是(char **)p,应该是一个字符型的二级指针   
即p是字符型的二级指针,则*p为指向二级指针的内容,
而q是一段char型内存空间的首地址....
p 指向的是 q
所以p应该是指向char型内存空间的首地址

仰望星空...........不忘初心!
2013-03-14 02:01
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:3 
*(char**)p=q;
这句话实际效果是改变了q的值,p反而不变

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-03-14 07:58
wyw19880809
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:178
专家分:738
注 册:2013-3-14
收藏
得分:3 
*(char**)p=q; p指针指向的内存值 作为地址指向的内存值指向q的内容      此时p和q的值都没变;后面一句p=q;p指向q的内容;此时q和p都是char*指向同一个内存空间
2013-03-14 16:37
王捉熊
Rank: 2
等 级:论坛游民
帖 子:46
专家分:61
注 册:2012-10-23
收藏
得分:3 
把二级指针赋值给一级指针,貌似会出错吧。

新手上路,说错请勿见怪!
2013-03-15 09:42
linjxwell
Rank: 2
等 级:论坛游民
帖 子:12
专家分:40
注 册:2013-3-14
收藏
得分:3 
(char **)p,此时p的类型是char **,
*(char **)p,此时是对char **的解引用,得到char *。
 
考虑char *p的情况,此时p的类型是char *,
*p,此时是对char *的解引用,得到char。
 
你的视频故弄玄虚吧!

补充一下,以上答得并不对题,关键是(char **)p,将p的内容(地址)转为二级指针,如果此时p并没有初始化,再进行*p运算,就会得到一个随机空间来存放q,这样做十分有问题。


[ 本帖最后由 linjxwell 于 2013-3-16 08:52 编辑 ]
2013-03-15 13:39
快速回复:二级指针的一个问题
数据加载中...
 
   



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

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