[C语言] 06--数组与指针的结合

1.数组与指针

示例1:

int  arr [5] = {1,2,3,4,5} ;
int * p1 = &arr ;
int * p2 = arr ;

printf("*p1:%d\n" , *(p1+1)) ;
printf("*p2:%d\n" , *(p2+1)) ;

在这里插入图片描述

示例2:

int  arr [5] = {1,2,3,4,5} ;
int * p2 = &arr[2] ;


printf("*p2-1:%d\n" , *(p2-1)) ;
printf("*p2:%d\n" , *p2) ;
printf("*p2+1:%d\n" , *(p2+1)) ;

以上代码是通过指针p2 来访问数组中的元素。
一开始定义p2并初始化让指针p2 指向数组中第3个元素的地址。
当我们使用p2 进行指针加减运算的时候 ,由于指针是整型的,可以访问到数组中的下一个元素以及上一个元素。

2.数组指针

数组指针: 专门用来指向一个数组的指针。

int * p ;
int (* p) [5] ; //定义一个 名为p 的指针, 
 //并且确定他指向的类型为int  [5] ,一个拥有5个元素的整型数组

int  arr [5] = {1,2,3,4,5} ; 
int (*p) [5] = arr ;
       
printf("arr:%p\n" , &arr );                 
printf("%p---%d\n" ,p , (*p)[2] ); // 3   * p ==> arr                           
printf("%p---%d\n" , p+1 , (*(p+1))[2] ); // 已经越界访问

注意:
以上代码中 p指向的是 一个整型数组并有5个元素。 因此在对p 进行加减运算时, 是加减一个数组 。

3.指针数组

指针数组: 专门用来存放指针的数组,称为指针数组。

int a = 100 ;
int b = 250 ;
int c = 550 ;
int d = 256 ;
int e = 998 ;
int  * p [5] = {&a, &b , &c , &d , &e} ; // 定义一个名字为 p的数组, 并且确定该数组中用来存放int * 整型地址

for (size_t i = 0; i < 5; i++)
{
    printf("*p[%d]:%d \n" , i , *(p[i])  ); // p[0]  --》 &a
}

4.指针与数组理解图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值