C语言:指针基础知识

#include<stdio.h>
int main()
{
	int a[]={1,2,3,4,5};
	int *p=a;
	printf("%d,",*p);
	printf("%d,",*(++p));
	printf("%d,",(*p)++);
	printf("%d,",*p);
	printf("%d,",*p--);
	printf("%d,",--(*p));
	printf("%d\n",*p);
	return 0;
}

代码运行结果为1,2,2,3,3,0,0

具体代码解析如下:
第4行    int a[]={1,2,3,4,5};        定义了一个int型数组a,同时将其初始化为{1,2,3,4,5}
第5行    int *p=a;        定义了一个int型指针p,并使其指向数组a的第一个元素
第6行    printf("%d,",*p);        打印p指向元素的值(数组a的第一个元素1)
第7行    printf("%d,",*(++p));        先对指针进行自增操作,后打印出p指向元素的值(数组a的第二个元素2)
第8行    printf("%d,",(*p)++);        先打印出p的值,后将p指向元素的值加一(此时指针指向数组a的第二个元素3)
第9行    printf("%d,",*p);        打印p指向元素的值
第10行    printf("%d,",*p--);        先打印p指向元素的值,后p自减(指针指向数组a的第一个元素
第11行    printf("%d,",--(*p));         先对p指向元素的值减一,后打印此值
第12行    printf("%d\n",*p);         打印p指向元素的值

(注:此题来源为苏小红《C语言程序设计(第3版)》 习题11.1)

附:关于表达式 (*p)++ 和 p++ 的不同含义的解释说明
(*p)++ 意为先取出p指向的值,后对取出值加1,p仍指向原来的储存单元;*p++ 则是先取出p指向的值,后将p的值加1,p不再指向原来的储存单元。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值