指针与数组

数组首元素的首地址和数组的首地址是不同的。前者是数组元素的地址,而后者是数组整体的地址。两个东西的含义不同,但是数值上是相同的。

/*
 *指针与数组的初步结合
 */
#include 
   
   
    
    

int main(void)
{
	int a[5] = {555, 444, 333, 222, 111};
	int *p;
	
	//p = &a; //编译结果warning: assignment from incompatible pointer type
	          //(不兼容指针类型的赋值),但是执行结果是对的。
	        
	//p = &a[0];//编译和执行都没有问题
	  p = a; // 编译和执行都没有问题
	  
	  a = p; //编译会报错,因为数组名是个常量,所以不能赋值,所以数组名不做左值
	
	printf("*p = %d.\n", *p);
	
	return 0;
}


   
   
p = &a[0]等同于p = a;都表示数组首元素首地址
p = &a会报错是因为&a是整个数组的首地址
访问数组的两种方法
int a[5]; int *p; p = a;
数组的方式访问:a[0]  a[1]  a[2]  a[3]  a[4]
指针的方式访问:*p  *(p+1)  *(p+2)  *(p+3)	*(p+4)





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值