黑马程序员之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”;

总结:数组和字符串与指针、结构体、函数的知识相结合,学好这部分知识,对以后的编程有很大的帮助。

0 0
原创粉丝点击