muzheyun 发表于 2011-5-19 11:26:25

请教《C与指针》里的一个问题。

在第六章里面,首先声明:
char ch='a';
char *cp=&ch;
然后表达式*cp++的运行步骤为3步
1:操作符产生cp的一份拷贝
2:然后++操作符增加cp的值
3:最后,在cp的拷贝上执行间接访问操作。
看的有点不明白,按照他的说法,这个表达式的值不就等于*cp了吗,也就是如果一个赋值语句p=*cp++;那么只运行一次的结果就与p=*cp是一样的对吗?
这就是上面说的p获得的是cp最初的拷贝,然后将cp的值〔不是拷贝〕加1,最后再执行间接访问操作〔是在cp的拷贝上进行访问操作,而不是加1后cq的新值〕
请问这样理解是正确的吗?
晕,加号都没显示

yajira 发表于 2011-5-19 11:46:10

这个和
a = i++是基本一致的

*cp++ 不循环的话 跟 *cp是一样的

lcofjp 发表于 2011-5-19 11:50:53

回复【楼主位】muzheyun
-----------------------------------------------------------------------

你的理解是正确的。
char ch = 'a';
char *cp = &ch;

char other = *cp++;
类似于:
{
    char temp = *cp;
    cp++;
    other = temp;
}

muzheyun 发表于 2011-5-19 11:57:24

谢谢两位,这两天正研究这本书呢,不知道研究完能不能对指针有个更深的理解

maxuedong 发表于 2012-10-11 10:44:50

指针很重要

小油猪儿 发表于 2012-10-11 10:54:07

lcofjp 发表于 2011-5-19 11:50 static/image/common/back.gif
回复【楼主位】muzheyun
-----------------------------------------------------------------------



这样说很明白啊~总分不清改先结合左边还是右边,谢谢记下
页: [1]
查看完整版本: 请教《C与指针》里的一个问题。