前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >指针(二)-指针与数组

指针(二)-指针与数组

作者头像
木杉乀
发布2021-04-02 06:37:16
3990
发布2021-04-02 06:37:16
举报
文章被收录于专栏:木杉の小屋

指针(二)-指针与数组

一 指针数组

数组元素类型为指针的数组(存储内容为指针)

代码语言:javascript
复制
#include 
int main()
{
	/* 指针数组 */
	// 1 定义几个int类型的变量
	int a, b, c;
	a = 1;
	b = 2;
	c = 3;
	// 2 定义几个int*类型的指针
	int* pa, * pb, * pc;
	pa = &a;
	pb = &b;
	pc = &c;
	// 3 定义一个数组 数组元素是int*类型的指针 长度为3
	// 元素类型 数组名[长度] = {};
	int* arr[3] = { pa, pb, pc };
    
	// 访问数组元素(通过数组名arr修改b的值)
	// arr[0] <===> pa *pa <==> a
	// arr[1] <===> pb *pb <==> b
	// arr[2] <===> pc *pc <==> c
	printf("b = %d\n", b);
	b = 20;
	printf("b = %d\n", b);
	*pb = 30;
	printf("b = %d\n", b);
	*arr[1] = 40;
	printf("b = %d\n", b);
    
	return 0;
}

二 数组指针

指向数组的指针

代码语言:javascript
复制
#include

int main()
{
	/* 数组指针 */
    // 1 定义一个数组
	int arr[5] = { 1, 2, 3, 4, 5 };
	// 2 定义一个指针指向数组arr
	// 指针指向的类型* 指针名 ;
	
	int(*p)[5] = &arr;
	// 定义了一个指针p 
	// p指向的类型:int [5] (是一个数组)
	// p本身的类型:int(*)[5]
    
	// 通过数组指针p 访问数组元素arr[2]
	// p <====> &arr
	// *p <====> arr
	// (*p)[2] <====> arr[2]
	printf("(*p)[2] = %d\n", (*p)[2]);            // 3
	
	// 结论: p[n] <==> *(p+n)
	printf("*(*p+2) = %d\n", *(*p + 2));          // 3
	printf("p[0][2] = %d\n", p[0][2]);            // 3
	
	printf("*(p[0] + 2) = %d\n", *(p[0] + 2));    // 3
	
	return 0;
}
(一维数组)数组名:
  1. 数组的名字
  2. 整个数组的首地址
  3. 数组第0个元素的首地址
注意:

数组指针的定义(类型得推导)

数组元素类型(*)数组长度

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/02/18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 指针(二)-指针与数组
    • 一 指针数组
      • 二 数组指针
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档