A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lucky0512 中级黑马   /  2015-7-10 10:28  /  551 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

指针变量通过“类型名 * 指针变量名;”定义,而且当指针变量指向一个存储单元时,可以用“* 指针变量名”引用该存储单元的内容。在C语言中这两处的“*”含义不同,前者不是运算符,贰拾定义指针变量时用的说明符,后者是间接运算符。“&”也是运算符,是取地址符。

间接运算符“*”、自加运算符“++”、“()”运算符这些运算符和指针一起用是需要注意运算符的优先级。

#include<stdio.h>
main{
        int a[5] = {0,10,20,30,40},*p = a;
        printf("%d\n",*p);        //相当于输出a[0]的值,输出结果是0
        printf("%d\n",*p++);   //++的优先级比*的优先级高,所以先进行p++,因为++在指针变量p的后面,所以该表达式先去a[0]的值,然后指针p指向a[1]的地址。所以输出0
        printf("%d\n",(*p)++);//*p=a[1]=10;(*p)++等价于a[1]++;因为++在a[0]的后面所以输出结果是10,但是a[1]的值变成了11。输出10
        printf("%d\n,*(++p)");//指针p原来指向a[1]的地址,++在指针p的前面,所以*(p++)=a[2];且指针指向a[2]的地址。输出20
        printf("%d\n,++(*p)");//指针现在指向a[2]的地址,即*p=20;++(*p)的值就是21。输出21
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马