黑马程序员——c语言的复杂数据类型:数组和指针
2015-04-13 13:30
661 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、数组的基本概念
1.一个int行变量或者一个float变量能保存一个人的分数,如果要保存一个班级的分数,那就远远不够。
因此,我们要用到数组。
2.数组就是用来存放一组数据的
3.数组只能存放一种类型的数据,不能同时存放int型数据和float型数据或者其它两种不同的数据类型
4.数组内部存放的数据称为元素
二、定义数组
1.格式
数据类型数组名[];
int array[4];
2.初始化数组
初始化数组的几种方式
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/16/4e567e718586633489ffab38fc2ed031)
3.数组内存分析
---内存的分配是从高地址进行的,但是一个数组的内部元素是从低到高进行的
---数组名的作用,用来查看元素地址
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/16/2e5570a36950ea694da9ea8b785a5743)
4.数组的使用
---数组与函数参数
---数组元素作为函数参数
---数组作为函数参数(sizeof注意)
我们看一个数组作为函数的例子:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/16/c749c1480f60c16a3f6bc6fefac40d5f)
-遍历数组元素
---两种方式遍历(while循环和for循环)
例子:用for循环遍历数组
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/16/cc2b978cc0fd386928c664271a88384a)
习题:设计一个函数,找到数组的最大值
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/16/4f44d70a6f2923c2a2be199f6e34bccb)
三、二维数组
1.二维数组的概念
一维数组能表示一个班人的成绩,二维数组则可以表示多个班级的成绩;
二维数组是一个特殊的一维数组:它的元素是一维数组;
例如int a[2][3] = {{1,2,3},{1,2,4}}可以看作由一维数组
a[0] = {1,2,3}和一维数组a[1]
= {1,2,3}组成。
3.初始化
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/16/53c7af0f4e28fbb4e61ac20361c520d9)
习题:输出一个二维数组
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/16/3682ba5975e0ad1182781bb7d8c193ac)
一、指针介绍
1.指针的重要性
指针是C语言中非常重要的数据类型,如果你说C语言中除了指针,其他你都学得很好,那你干脆说没学过C语言。
以后在OC中也是要经常的用到指针,有些难度比较大的指针只需要理解就可以了
二、指针变量的定义
1.定义的格式
类名标识符 *指针变量名;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/16/1794db81ba1a70f8abc9309693c36880)
2.先定义后赋值
简单取值并简单改值
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/16/726e6963f68b7d818be3a272930daf9f)
3.定义的同时赋值
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/16/0d0d42e788931badc8620d306d708590)
4.实现修改实参
5.注意点
其他指针类型说明,比如
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/16/2bb921075b79077b0abf219716d4c92a)
6.清空指针
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/16/2d841c23ec9f3ac956fa4f1a4215e921)
三、指针实例
1.利用指针交换两个数的值
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/16/581cbfed27f94c9557e26f5e420ce9d9)
2.分别输出char,int,long类型数据和指针占用的内存字节数
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/16/5e9b8024091abc6352434e4c48dbaf34)
返回指针的函数
指针也是C语言中的一种数据类型,因此一个函数的返回值肯定可以是指针类型的
返回指针的函数的一般形式为:类型名 *函数名(参数列表)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/16/a31b2332d7f8ca33493cfb3321f22224)
指向函数的指针
1.为什么指针可以指向一个函数?
函数作为一段程序,在内存中也要占据部分存储空间,它也有一个起始地址,即函数的入口地址。函数有自己的地址,那就好办了,我们的指针变量就是用来存储地址的。因此,可以利用一个指针指向一个函数。其中,函数名就代表着函数的地址。
2.指向函数的指针的定义
定义的一般形式:函数的返回值类型 (*指针变量名)(形参1,形参2,
...);
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/16/718b4d1444e9793dfeb0c5dee3928a76)
3.使用注意
由于这类指针变量存储的是一个函数的入口地址,所以对它们作加减运算(比如p++)是无意义的
指向函数的指针变量主要有两个用途:
• 调用函数
• 将函数作为参数在函数间传递
一、数组的基本概念
1.一个int行变量或者一个float变量能保存一个人的分数,如果要保存一个班级的分数,那就远远不够。
因此,我们要用到数组。
2.数组就是用来存放一组数据的
3.数组只能存放一种类型的数据,不能同时存放int型数据和float型数据或者其它两种不同的数据类型
4.数组内部存放的数据称为元素
二、定义数组
1.格式
数据类型数组名[];
int array[4];
2.初始化数组
初始化数组的几种方式
3.数组内存分析
---内存的分配是从高地址进行的,但是一个数组的内部元素是从低到高进行的
---数组名的作用,用来查看元素地址
4.数组的使用
---数组与函数参数
---数组元素作为函数参数
---数组作为函数参数(sizeof注意)
我们看一个数组作为函数的例子:
-遍历数组元素
---两种方式遍历(while循环和for循环)
例子:用for循环遍历数组
习题:设计一个函数,找到数组的最大值
三、二维数组
1.二维数组的概念
一维数组能表示一个班人的成绩,二维数组则可以表示多个班级的成绩;
二维数组是一个特殊的一维数组:它的元素是一维数组;
例如int a[2][3] = {{1,2,3},{1,2,4}}可以看作由一维数组
a[0] = {1,2,3}和一维数组a[1]
= {1,2,3}组成。
3.初始化
习题:输出一个二维数组
一、指针介绍
1.指针的重要性
指针是C语言中非常重要的数据类型,如果你说C语言中除了指针,其他你都学得很好,那你干脆说没学过C语言。
以后在OC中也是要经常的用到指针,有些难度比较大的指针只需要理解就可以了
二、指针变量的定义
1.定义的格式
类名标识符 *指针变量名;
2.先定义后赋值
简单取值并简单改值
3.定义的同时赋值
4.实现修改实参
5.注意点
其他指针类型说明,比如
6.清空指针
三、指针实例
1.利用指针交换两个数的值
2.分别输出char,int,long类型数据和指针占用的内存字节数
返回指针的函数
指针也是C语言中的一种数据类型,因此一个函数的返回值肯定可以是指针类型的
返回指针的函数的一般形式为:类型名 *函数名(参数列表)
指向函数的指针
1.为什么指针可以指向一个函数?
函数作为一段程序,在内存中也要占据部分存储空间,它也有一个起始地址,即函数的入口地址。函数有自己的地址,那就好办了,我们的指针变量就是用来存储地址的。因此,可以利用一个指针指向一个函数。其中,函数名就代表着函数的地址。
2.指向函数的指针的定义
定义的一般形式:函数的返回值类型 (*指针变量名)(形参1,形参2,
...);
3.使用注意
由于这类指针变量存储的是一个函数的入口地址,所以对它们作加减运算(比如p++)是无意义的
指向函数的指针变量主要有两个用途:
• 调用函数
• 将函数作为参数在函数间传递
相关文章推荐
- 黑马程序员——C复杂数据类型--数组、字符串、指针
- 黑马程序员——c语言的复杂数据类型:指针和结构体
- 黑马程序员————C语言基本语法(数组、字符串、指针、其他数据类型)
- 黑马程序员----C语言复杂数据类型之数组(字符串)与指针篇
- 黑马程序员——C语言基础---复杂数据类型(数组,字符串)
- 黑马程序员——C语言中指针与其他数据类型的结合使用
- 黑马程序员----C语言复杂数据类型之结构体与枚举篇
- 使用python向C语言的链接库传递数组、结构体、指针类型的数据
- C语言01 - 基本数据类型 、sacnf、数组、指针
- 黑马程序员——C语言基础--复杂数据类型(指针&枚举&变量)
- 黑马程序员———C语言回顾之复杂数据类型
- 黑马程序员_c语言的复杂数据类型
- 黑马程序员——C语言-3:复杂数据类型
- 黑马程序员——c语言复杂数据类型:结构体和枚举,typedef的使用
- 黑马程序员——ios开发基础之C语言数组、指针与结构体
- 黑马程序员C语言学习-关键字、标示符、注释、数据类型、常量变量
- 【黑马程序员】iOS学习之路——C语言之数据类型、常量、变量
- C语言32个关键字_复杂数据类型
- 【黑马程序员】 我的C语言学习笔记(1)数据类型
- C语言 复杂指针的申明问题 数组指针 指针数组 函数指针 指针函数一览无遗! C/C++求职面试必备考点(四)