黑马程序员之IOS学习总结——04 C语言中数组与字符串
来源:互联网 发布:分水岭算法原理 编辑:程序博客网 时间:2024/06/05 13:32
今天复习到数组与字符串,通过一系列的做题,发现,我字符串这里学的不是很好,很多知识不扎实,所以下午又重新温习了一遍李老师讲的C语言字符串,正如李老师说的:ios开发中,会用到很多字符串与指针相结合的知识,所以,字符串和指针一定要学好。看不明白就反复看,多做题,多总结才是王道。
我们一起先来复习下数组的知识。
那么什么时候用到数组呢,当我们需要保存一组人的年龄啊,分数值,或者是名字的时候,就需要定义一个数组。
数组也需要定义类型和初始化。
一、数组:
数组的定义格式: 类型 数组名[元素个数];
数组的特点:
只能存放一种类型的数据,比如int类型的数组、float类型的数组
里面存放的数据称为“元素”
例如: int ages[5] = {19, 29, 28, 27, 26}; // 定义一个int类型的整型数组,并将age数组进行初始化。
数组名就是数组的地址,也是数组首元素的地址。
1. 声明数组的元素个数(需要多少存储空间)
元素有顺序之分,每个元素都有一个唯一的下标(索引),从0开始
数组元素的访问:a[i]
2.数组的 内存分析
数组存储空间的大小
存储空间的划分(内存的分配是从高地址到低地址进行的,但一个数组内部元素又是从低到高进行的)
数组名的作用,查看元素地址
3. 数值初始化的正确写法:
① int ages[5] = {10 , 11, 12, 67, 56};
② int ages[5] = {10, 11};
③ int ages[5] = {[3] = 10, [4] = 11};
④ int ages[] = {10, 11, 14};
⑤ int ages['A'-50] = {10, 11, 12, 14, 16}; // 字符A的ASCII值是65
⑥ int count = 5;
int ages[count];
ages[0] = 10;
ages[1] = 11;
ages[2] = 18;
数组作为函数参数,可以省略元素个数
数组作为函数参数,传递是整个数组的地址,修改函数形参数组元素的值,会影响到外面的实参数组。
数组当做函数参数传递时,会当做指针变量来使用,指针变量在64bit编译器环境下,占据8个字节。
4.关键字#define:#define是预处理指令中的宏定义关键字。 它的作用是在编译预处理时,将源程序中所有"宏名"替换成右边的"字符串",常用来定义常量。
例如:#define kCount 5
int ages[kCount] = {10 , 11, 12, 67, 56};
用宏定义的好处是,假如程序要修改数组元素的个数,直接就在 kCount 5中修改5位置的值,这样做可以优化程序的性能。
二、字符串:
字符串可以用数组来表示,字符串也可以用指针来表示,我感觉字符串挺重要的,当时就是小看它了。
1.什么是字符串:很多个字符组合在一起就是字符串了。简单的字符串”i am jack”。
2.字符串的初始化
char a[] = “123”; 和 char a [] = {‘1’,’2’,’3’};的区别,可以比较大小
“123”其实是由’1’、’2’、’3’、’\0’组成
“123”的存储分布
字符串的输出”%s”,’\0’是不会输出的
3.\0的作用:' \0 ' 是字符串结束的标志,打印字符串的时候直到遇到' \0 '才会将字符串打印完毕,' \0 '的ASCII值是0。
char a[] = {‘i’,’t’,’\0’,’c’};
printf("%s\n", a); //输出的结果是it,因为' \0 '是字符串结束的标志。
4.strlen函数:计算字符串长度
(1).计算的是字符数,并不是字数。一个汉字算作3个字符
(2)计算的字符不包括\0
(3)从某个地址开始数字符的个数,直到遇到\0为止
strlen函数声明在string.h文件中
三、字符串数组:
1.使用场合
一维字符数组中存放一个字符串,比如一个名字char name[20] = "lhy"
如果要存储多个字符串,比如一个班所有学生的名字,则需要二维字符数组,char names[15][20]可以存放15个学生的姓名(假设姓名不超过20字符)
如果要存储两个班的学生姓名,那么可以用三维字符数组char names[2][15][20]
2.初始化
char names[2][10] = { {'J','a','y','\0'}, {'J','i','m','\0'} };
char names2[2][10] = { {"Jay"}, {"Jim"} };
char names3[2][10] = { "Jay", "Jim" };
四、指针与数组
int ages[5];
int *p;
p = ages; // 指针变量p指向了数组ages的首元素
1> 数组名[下标] ages[i]
2> 指针变量名[下标] p[i]
3> *(p + i)
五、指针表示字符串:char *s = “lhy”;
或者
char *s;
s = “lhy”;
总结:数组和字符串与指针、结构体、函数的知识相结合,学好这部分知识,对以后的编程有很大的帮助。
- 黑马程序员之IOS学习总结——04 C语言中数组与字符串
- 黑马程序员IOS基础---C语言学习之字符串与字符串数组
- 黑马程序员-------c语言学习笔记之数组与字符串
- 黑马程序员之IOS学习总结——01C语言中的常量与变量
- 黑马程序员之IOS学习总结——03C语言中循环结构
- 黑马程序员——IOS学习笔记(C语言字符串和数组)
- 黑马程序员IOS-C语言-数组、字符串
- 【黑马程序员】iOS学习之路——C语言之函数和数组
- 黑马程序员——IOS基础---C语言学习之复杂数据类型之字符串
- 黑马程序员——C语言学习之数组——字符串——指针
- 黑马程序员—IOS基础之C语言—数组与指针
- 黑马程序员——ios开发基础之C语言数组、指针与结构体
- 黑马程序员IOS基础---C语言学习之数组
- 黑马程序员---C语言数组与字符串
- 黑马程序员---C语言数组与字符串
- 黑马程序员-C语言-数组与字符串
- 黑马程序员----C 语言学习笔记之数组指针与字符串指针
- 黑马程序员之IOS学习总结——05 C语言中的指针
- Anagrams
- 整个人都不好了
- 齐次坐标的理解
- android夜间模式的实现
- dedecms首页调用随机文章
- 黑马程序员之IOS学习总结——04 C语言中数组与字符串
- 13.4.15 管道的实现
- 【LeetCode】Intersection of Two Linked Lists
- Java线程(十一):CountDownLatch-线程并发的发令枪
- iOS开发之开启定位后遇到的问题
- 13.4.16 加挂/卸载的实现
- Neutron使用openvswitch网络通信的基本原理
- 13.4.17 链接/解链的实现(文件共享)
- JS隐藏子iframe下的某个元素