(一)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;
}
上面的程序是一个数组的遍历以及找出最大值