0
点赞
收藏
分享

微信扫一扫

C语言笔记:数组和指针

伽马星系 2022-04-02 阅读 100
c语言linux

目录

数组

一维数组

1、作用:

2、数组框架:

3、数组的定义方式:

4、计算数组内存大小:

5、访问数组元素:

6、数组名和数组的数据类型问题:

二维数组

1、本质上也是一维数组

2、二维数组定义模型

3、二维数组定义和初始化

4、二维数组的大小

5、数组元素的访问

指针数组

1、概念:

2、定义模型

指针

一级指针

1、概念:

2、如何定义一个指针变量

3、 怎么使用指针变量(解引用、取目标)

4、指针内存大小:

5、指针加减-->内存地址加减

6、指针变量数据类型问题

7、通用指针(万能指针)

8、NULL -->空指针

二级指针

1、概念:

 2、定义模型

3、二级指针的大小:

4、二级指针数据类型问题

数组指针

1、概念:

2、定义模型:

3、内存大小:


数组

一维数组

某种数据类型变量的集合,在一块连续的内存上

1、作用:

方便定义相同数据类型的变量

2、数组框架:

元素的数据类型 变量名[元素个数];

3、数组的定义方式:

4、计算数组内存大小:

数组内存大小==数组元素类型所占字节数*元素个数

5、访问数组元素:

访问数组的元素的下标:0~(数组元素个数-1)

6、数组名和数组的数据类型问题:

=========================================================================

学完数组要掌握的知识点:

1、定义数组

2、给数组赋值

3、把数组数据正确输出

4、数组的大小

5、数组的内存图

=========================================================================

二维数组

1、本质上也是一维数组

只是元素数据类型为一维数组的数组,就叫做二维数组

2、二维数组定义模型

3、二维数组定义和初始化

(1)int a[2][3]; //未初始化定义,定义了一个二维数组,该数组有两个元素,元素类型为:int ()[3],它的值为随机值

(2)int a[2][3]={{1, 2, 3}, {4, 5, 6}}; //全部初始化定义,定义了一个二维数组,该数组有两个元素,元素类型为:int ()[3],它的值:

(3)int a[2][3]={1, 2, 3, 4, 5, 6}; //全部初始化定义,定义了一个二维数组,该数组有两个元素,元素类型为:int ()[3],它的值:

(4)int a[2][3]={{1}, {4, 5}}; //部分初始化定义,定义了一个二维数组,该数组有两个元素,元素类型为:int ()[3],它的值:

(5)int a[2][3]={1, 2, 3}; //部分初始化定义,定义了一个二维数组,该数组有两个元素,元素类型为:int ()[3],它的值:

(6)int a[][3]={{1, 2, 3},{4}}; //不定长二维数组,定义了一个二维数组,该数组有两个元素,元素类型为:int()[3]二维数组,定义了一个二维数组,该数组有两个元素,元素类型为:int ()[3],它的值:

4、二维数组的大小

二维数组的大小 == 小数组的元素类型大小*小数组的元素个数*大数组的元素个数== 大数组的元素个数*小数组的数据类型大小

5、数组元素的访问

 

指针数组

1、概念:

2、定义模型

=========================================================================

指针

一级指针

1、概念:

2、如何定义一个指针变量

模型:被存储变量的数据类型 *变量名

3、 怎么使用指针变量(解引用、取目标

4、指针内存大小:

5、指针加减-->内存地址加减

int a=100;

int *p=&a;

注意:

指针加减要考虑它存储对象的大小

内存地址加减也要考虑它存储对象的大小

内存地址包括两部分:地址值和存储的对象

6、指针变量数据类型问题

7、通用指针(万能指针)

void *p //通用指针(万能指针),可以合法存储任意一种类型的变量地址,但是存储之后类型会变成void *

注意:通用指针要解引用必须先强制转换类型

8、NULL -->空指针

指针的零值:

int *p; //p里面是随机值,也把这种指针称之为野指针,野指针是非常危险的,所以指针定义后如果未初始化,就赋值为NULL,比较安全

如果对NULL指针解引用会爆段错误:

 

=========================================================================

二级指针

1、概念:

指针变量用来存储变量内存地址

 2、定义模型

一级指针变量类型 *变量名;

3、二级指针的大小:

32位系统占4个字节

64位系统占8个字节

4、二级指针数据类型问题

int **q; q的数据类型为:-->int **

 &q的类型为:-->int ***

 

=========================================================================

数组指针

1、概念:

本质是一级指针,用来存储数组的地址

定义一个相应类型的指针变量合法存储数组地址

2、定义模型:

定义一个相应类型的指针变量合法存储数组地址

模型:

数组的数据类型 *变量名

3、内存大小:

 

举报

相关推荐

0 条评论