随笔 - 20, 文章 - 0, 评论 - 5, 引用 - 0
数据加载中……

C语言指针运算符

 1 #include <stdio.h>
 2 
 3 int _tmain(int argc, _TCHAR* argv[])
 4 {
 5     int x[] = {102030};
 6     int *px = x;
 7 
 8     printf("%d,"++*px); //同优先级    自右向左结合  相当于++(*px)    
 9     printf("%d\n"*px);  //自加了1    
10 
11     px = x;
12     printf("%d,", (*px)++);
13     printf("%d\n"*px);
14 
15     px = x;
16     printf("%d,"*px++);
17     printf("%d\n"*px);
18 
19     px = x;
20     printf("%d,"*++px);
21     printf("%d\n"*px);
22     return 0;
23 }


答案:  printf("%d,"++*px);   //同优先级    自右向左结合  相当于++(*px)   所以结果为11  
        printf("%d\n"*px);     //上面自加了1     所以结果为 11 

printf("%d,", (*px)++);   // ++ 在后面 优先级 比放前面要高 且为自左向右结合方式    结果仍为 11
printf("%d\n"*px);    // 结果为12

printf("%d,"*px++);   //++在后面 优先级高于 * 相当于 *(px++)   指针加 1  加了 4个字节 指向了 数组的第二个元素 即 20 但这是下一次输出的结果 本次输出依然为12
printf("%d\n"*px);   //输出20

printf("%d,"*++px);  //优先级 相同  自右向左结合    相当于*(++px) 开始px = x 指向了第一个元素    指针+1后指向数组中第二个元素 20
printf("%d\n"*px); //只是输出而已

posted on 2010-09-03 19:01 Eping 阅读(326) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理