现在的位置: 首页 > 综合 > 正文

指针初识5(指针与数组)

2017年09月22日 ⁄ 综合 ⁄ 共 418字 ⁄ 字号 评论关闭
<span style="font-size:18px;">#include<stdio.h>
#include<stdlib.h>

void main()
{
	int a[5] = {1,3,5,7,9};
	int *p = a;//指向元素的指针
	int (*pa)[5] = &a;//指向数组的指针
	printf("%x,%x",a,&a);
    printf("\n%d,%d",sizeof(*a),sizeof(*(&a)));

	
	printf("\n%d,%d",sizeof(*p),sizeof(*pa));
	getchar();
}</span>



当看到 a与&a打印出来的地址是一样的时候,我就猜测 sizeof(*a)与sizeof(*(&a))是一样的,都是指向数组第一个元素。

结果打印的结果是:4,20

原来 *(&a)与*pa一样都是指向数组的指针,*p是指向元素的指针,两者是有区别的。在c里面 不能因为起始地址一样的,就认为指针操作的结果是一样的,这是一个误区。

抱歉!评论已关闭.