黑马程序员——C语言基础 char字符 数组
(以下内容是对黑马苹果入学视频的个人知识点总结)
(一)char类型
1)存储细节
ASCII单字节表(双字节GBK\GB2312\GB18030\Unicode)
2)可以当整数使用
在-128~127范围内,可以当做整数来用
3)常见的错误
①char c = A;
②char c = "A";
③char c = 'ABCD';
④char c = '男';
1 #include <stdio.h> 2 /* 3 1.说出下面程序的输出结构 4 int i = 67 + '4'; 5 char c = 'c' - 10; 6 7 printf("%d - %c\n", i, i); 8 printf("%d - %c\n", c, c); 9 10 11 2.写一个函数,将小写字母转为大写 12 13 */ 14 15 char upper(char c) 16 { 17 // 如果是小写字母,就转成大写 18 /* 19 if (c>='a' && c<='z') { // ['a', 'z'] 20 return c - ('a'-'A'); 21 } else {// 如果不是小写字母,返回字母本身 22 return c; 23 }*/ 24 25 // 如果是小写字母,就转成大写 26 if (c>='a' && c<='z') { // ['a', 'z'] 27 return c - ('a'-'A'); 28 } 29 // 如果不是小写字母,返回字母本身 30 return c; 31 } 32 33 int main() 34 { 35 char cc = upper('f'); 36 37 printf("%c\n", cc); 38 return 0; 39 }
4)转义字符
①\n 将当前位置移到下一行开头(回车换行)
②\t 跳到下一个TAB位置
③\\ 代表一个反斜线字符
④\" 代表一个双引号字符
⑤\0 代表空字符
(二)数组
1)数组的基本概念
1>数组,从字面上看,就是一组数据的意思,数组就是用来存储一组数据的
2>只能存放一种类型的数据,比如int类型的数组、float类型的数组,里面存放的数据称为“元素”
2)数组的定义
1>声明数组的类型
2>声明数组的元素个数
3>格式
元素类型 数组名[元素个数];
比如:int ages[3];
4>简单的使用和初始化
数组可以存放数据,可以作为函数参数,数组元素也可以作为函数参数
数组有多种初始化方式
①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};当然只能在定义数组的同时进行初始化
1 #include <stdio.h> 2 3 // 数组作为函数参数,可以省略元素个数 4 // 数组作为函数参数,传递是整个数组的地址,修改函数形参数组元素的值,会影响到外面的实参数组 5 6 void change(int array[]) 7 { 8 //printf("array==%p\n", array); 9 10 array[0] = 100; 11 } 12 13 void change2(int n) 14 { 15 n = 100; 16 } 17 18 int main() 19 { 20 int ages[6] = {10, 11, 10, 11, 10, 11}; 21 22 //printf("ages==%p\n", ages); 23 24 change(ages); 25 26 //change2(ages[0]); 27 28 printf("%d\n", ages[0]); 29 return 0; 30 }
5>内存分析
数组内的存储空间大小和数组的类型以及存放的数据个数有关。内存的分配是从高地址到低地址进行的,但一个数组内部元素又是从低到高进行的。
二维数组和数组的内存都一样,一下是一个二维数组的存储形式
/* 设计一个函数,找出整型数组元素的最大值 */ #include <stdio.h> int maxOfArray(int array[], int length) { // 数组当做函数参数传递时,会当做指针变量来使用,指针变量在64bit编译器环境下,占据8个字节 //int size = sizeof(array); //printf("array=%d\n", size); //sizeof(array); // 1.定义一个变量存储最大值(默认就是首元素) int max = array[0]; // 2.遍历所有元素,找出最大值 for (int i = 1; i<length; i++) { // 如果当前元素大于max,就用当前元素覆盖max if (array[i] > max) { max = array[i]; } } return max; } int main() { int ages[] = {11, 90, 67, 150, 78, 60, 70, 89, 100}; int ages2[] = {11, 90, 67, 150, 78, 60, 70, 89, 100}; //int size = sizeof(ages); //printf("ages=%d\n", size); int max = maxOfArray(ages, sizeof(ages)/sizeof(int)); printf("%d\n", max); return 0; }
上面的程序是一个数组的遍历以及找出最大值