博客
关于我
re学习记录从入门到入狱【15】
阅读量:151 次
发布时间:2019-02-28

本文共 1400 字,大约阅读时间需要 4 分钟。

指针数组 / 数组指针

1. 指针数组的定义

char arr[10];  //就是一个数组,有10个成员,每个成员宽度为1字节,因为是char类型char* arr[10]; //指针数组,长度10,名为arr,每个成员为char*指针类型,4字节

指针数组的赋值

int main(){   	char* a = "Hello";  	//编译器会在常量区分一块内存,存储Hello的ASCII码	//然后把内存的地址存到a,所以a和b里存的都是一个地址,因为是char* 所以都是4字节	char* b = "Cracker";}

那么我就可以定义一个数组

char* arr[2]={   a,b};//数组里面有两个成员//每个成员四字节//内容就是a和b两个地址
//那么也可以这样写//与上面完全相同char* arr[2];arr[0]=a;arr[1]=b;
//但我们开发中,用如下方式居多char* arr[2] = {   	"Hello",	"Cracker"};

可能看不懂,但是没关系,首先看数组类型char*。

存储的是,两个字符串的内存地址,而不是直接将字符串存储也是与上面一样,就是写法不同
2. 结构体指针数组
任何类型都可以定义数组,结构体呢?

struct poi{   	int x;	int u;};poi a; //定义一个变量,名为a,类型为结构体类型,宽度是8字节poi arr[10]; //结构体数组,创建一个数组,数组里有十个成员,每个成员都是poi类型,宽度就是8*10字节poi* abrr[10]; //结构体指针数组,也是个数组,也有十个成员,但是每个成员都是一个指针,宽度就是4*10字节

所以说,指针数组本质就是数组,只不过里面存的是各种各样的指针

4. 数组指针的使用

int arr[]={   1,2,3,4,5,6,7};int (*px)[7]=&arr;

如果我要取数组里面的值,怎么操作?

*取一个指针类型的值的时候,类型就是减掉一颗星。
加&取地址符的时候是加一颗星
int (px)[7] 所以取得时候去掉一个
那么他现在在我们眼里就是一个数组,我们就可以根据下标随便取值了。

int arr[] = {    1,2,3,4,5,6,7 };	int(*px)[7] = &arr;	printf("%d", (*px)[0]);

在这里插入图片描述

int arr[3][3] = {      //定义一个二维数组	{   1,2,3},	{   4,5,6},	{   7,8,9}};int x = &arr[0];  //取第一个成员的地址,也就是{1,2,3}//那么加一个取地址符*,也就是数组带了个*,就是数组指针

在这里插入图片描述

运行,报错如上图所示,所以&arr[0]就是一个数组指针类型

int (*x)[3] = &arr[0];  //所以我们就可以定义一个数组指针//取二维数组的第一个元素的地址。//那么 *x 得到的是什么//*x就是砍掉一颗星,砍掉一颗星后就是一个数组,宽度为3//(*x)[0],这样取的是宽度为3的第一个成员,首地址。//因为此时他在我们眼里就是一个数组,0是取这个数组里的第一个成员。
printf("%d,%d", (*x)[0], (*x)[1]);  //我们就会取出1和2,运行看下

在这里插入图片描述

转载地址:http://diwc.baihongyu.com/

你可能感兴趣的文章
MySQL InnoDB引擎的锁机制详解
查看>>
Mysql INNODB引擎行锁的3种算法 Record Lock Next-Key Lock Grap Lock
查看>>
mysql InnoDB数据存储引擎 的B+树索引原理
查看>>
mysql innodb通过使用mvcc来实现可重复读
查看>>
mysql insert update 同时执行_MySQL进阶三板斧(三)看清“触发器 (Trigger)”的真实面目...
查看>>
mysql interval显示条件值_MySQL INTERVAL关键字可以使用哪些不同的单位值?
查看>>
Mysql join原理
查看>>
mysql order by多个字段排序
查看>>
MySQL Order By实现原理分析和Filesort优化
查看>>
mysql problems
查看>>
mysql replace first,MySQL中处理各种重复的一些方法
查看>>
MySQL replace函数替换字符串语句的用法(mysql字符串替换)
查看>>
Mysql Row_Format 参数讲解
查看>>
mysql select, from ,join ,on ,where groupby,having ,order by limit的执行顺序和书写顺序
查看>>
MySQL Server 5.5安装记录
查看>>
mysql slave 停了_slave 停止。求解决方法
查看>>
MySQL SQL 优化指南:主键、ORDER BY、GROUP BY 和 UPDATE 优化详解
查看>>
MYSQL sql语句针对数据记录时间范围查询的效率对比
查看>>
mysql sum 没返回,如果没有找到任何值,我如何在MySQL中获得SUM函数以返回'0'?
查看>>
mysql Timestamp时间隔了8小时
查看>>