码迷,mamicode.com
首页 > 编程语言 > 详细

关于C语言指针中的p++与p+i

时间:2015-04-12 10:31:26      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:

先看一组代码:

#include <stdio.h>
void main()
{
	int i,*p,a[7];
	p=a;
	for(i=0;i<7;i++)
		scanf("%d",p++);
	printf("\n");
	for(i=0;i<7;i++,p++)
		printf("%d",*p);
}

 我们输入7个数,但输出的结果却是随机数。产生的原因为程序执行完第一组for循环后,指针已经指到了数组后的内存单元,如果想要输出该数组元素,则需重新将其首地址赋值给p(p=a)。

技术分享

以下是改正的版本————————————————

技术分享

当然我们还可以将p++替换为p+i;以下为参考代码————————————————

#include <stdio.h>
void main()
{
	int i,*p,a[7];
	p=a;
	for(i=0;i<7;i++)
		scanf("%d",p+i);
	printf("\n");
	for(i=0;i<7;i++)
		printf("%3d",*(p+i));
}

 其好处是从第二次循环后都不需要重新将指针指回数组首元素。

方法 a[0]地址 a[1]地址 a[i]地址
通过数组元素名 a[0] a[1] a[i]
通过数组名a *a *(a+1) *(a+i)
通过指针变量p *p *(p+1) *(p+i)
下标法 p[0] p[1] p[i]

因为p指向a的首地址,即a[0],所以a[i]=>*(a+i)=>*(p+i)。

关于C语言指针中的p++与p+i

标签:

原文地址:http://www.cnblogs.com/ssh-007/p/4419111.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!