| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 923 人关注过本帖
标题:[求助]为什么pa++;//也是指针表达式
只看楼主 加入收藏
xingjing314
Rank: 2
等 级:论坛游民
帖 子:160
专家分:32
注 册:2007-1-23
结帖率:94.74%
收藏
 问题点数:0 回复次数:10 
[求助]为什么pa++;//也是指针表达式
inta,b;
intarray[10];
int*pa;
pa=&a;//&a是一个指针表达式。
int**ptr=&pa;//&pa也是一个指针表达式。
*ptr=&b;//*ptr和&b都是指针表达式。
pa=array;
pa++;//这也是指针表达式.



为什么pa++;//也是指针表达式?
指针不是必须有*号吗?
还有&进行表示吗?
搜索更多相关主题的帖子: 指针 表达 
2007-02-07 17:00
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
收藏
得分:0 
pa只个在内存中的地址
*是取值运算 *pa的意思就是取pa这个地址中的值

[此贴子已经被作者于2007-2-7 17:06:15编辑过]


羊肉串 葡萄干 哈密瓜!!
2007-02-07 17:05
xingjing314
Rank: 2
等 级:论坛游民
帖 子:160
专家分:32
注 册:2007-1-23
收藏
得分:0 
声明了一个数组TYPEarray[n],则数组名称array就有了两重含义:第一,它代表整个数组,它的类型是TYPE[n];第二 ,它是一个指针,该指针的类型是TYPE*,该指针指向的类型是TYPE,也就是数组单元的类型,该指针指向的内存区就是数组第0号单元,该指针自己占有单独的内存区,注意它和数组第0号单元占据的内存区是不同的。该指针的值是不能修改的,即类似array++的表达式是错误的。

中的意思array++却表达式错误的,
那什么时候正确什么时候错误那?


2007-02-07 17:09
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
收藏
得分:0 
array++数组名当然不能被副值运算
如果是array+1就可以了

羊肉串 葡萄干 哈密瓜!!
2007-02-07 17:17
xingjing314
Rank: 2
等 级:论坛游民
帖 子:160
专家分:32
注 册:2007-1-23
收藏
得分:0 
什么是赋值运算那?

2007-02-07 18:21
xingjing314
Rank: 2
等 级:论坛游民
帖 子:160
专家分:32
注 册:2007-1-23
收藏
得分:0 
array++不是定值就可以运算了吧?

2007-02-07 18:32
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
收藏
得分:0 
a=1
a++
a--
a=a++
a=1*11*111
都是副值运算

羊肉串 葡萄干 哈密瓜!!
2007-02-07 21:36
lihu_325
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-2-5
收藏
得分:0 
[QUOTE]

[QUOTE][URL=http://www.bc-cn.net/Article/kfyy/cjj/jc/200512/2630.html]http://www.bc-cn.net/Article/kfyy/cjj/jc/200512/2630.html[/URL]
[/QUOTE]2.3 代码行内的空格
l 【规则 2-3-1 】 关键字之后要留空格。象 const 、 virtual 、 inline 、 case 等关键字之后至少要留一个空格,否则无法辨析关键字。象 if 、 for 、 while 等关键字之后应留一个空格再跟左括号‘(',以突出关键字。

l 【规则 2-3-2 】 函数名之后不要留空格,紧跟左括号‘(',以与关键字区别。

l 【规则 2-3-3 】 ‘('向后紧跟,‘)'、‘,'、‘ ; '向前紧跟,紧跟处不留空格。

l 【规则 2-3-4 】 ‘,'之后要留空格,如 Function(x, y, z) 。如果‘ ; '不是一行的结束符号,其后要留空格,如 for (initialization; condition; update) 。

l 【规则 2-3-5 】 赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“ = ”、“ += ” “ >= ”、“ <= ”、“ + ”、“ * ”、“ % ”、“ && ”、“ || ”、“ << ” , “ ^ ”等二元操作符的前后应当加空格。

l 【规则 2-3-6 】 一元操作符如“ ! ”、“ ~ ”、“ ++ ”、“ -- ”、“ & ”(地址运算符)等前后不加空格。

l 【规则 2-3-7 】 象“ []”、“ .”、“->” 这类操作符前后不加空格。

2 【建议 2-3-1 】 对于表达式比较长的 for 语句和 if 语句,为了紧凑起见可以适当地去掉一些空格,如 for (i=0; i<10; i++)和 if ((a<=b) && (c<=d))

void Func1(int x, int y, int z); // 良好的风格

void Func1 (int x,int y,int z); // 不良的风格

if (year >= 2000) // 良好的风格

if(year>=2000) // 不良的风格

if ((a>=b) && (c<=d)) // 良好的风格

if(a>=b&&c<=d) // 不良的风格

for (i=0; i<10; i++) // 良好的风格

for(i=0;i<10;i++) // 不良的风格

for (i = 0; I < 10; i ++) // 过多的空格

x = a < b ? a : b; // 良好的风格

x=a<b?a:b; // 不好的风格

int *x = &y; // 良好的风格

int * x = & y; // 不良的风格

array[5] = 0; // 不要写成 array [ 5 ] = 0;

a.Function(); // 不要写成 a . Function();

b->Function(); // 不要写成 b -> Function();

[/QUOTE]
2007-02-07 21:44
lihu_325
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-2-5
收藏
得分:0 
请看我上面发的~
以后注意格式,易读~~


我也是刚知道
2007-02-07 21:45
alading664
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-1-25
收藏
得分:0 

指针就像一个容具,它里面放着地址,区别就是有些容具的瓶口是开的,里面可以换水,有些是封闭的,里面的水是不会变化的。
比如 a[5]……
里面的a就是个封闭的容器,永远指向数组的第一个地址即&a[0],因此不可以自身相加,a++是非法的,a+1是可以的。
int **p p是个开口容器,当然p里面可以是任何值的地址,包括指针。

2007-02-07 23:27
快速回复:[求助]为什么pa++;//也是指针表达式
数据加载中...
 
   



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

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