Linux下C语言教程-李慧芹老师-第五章
目录
数组
构造类型之一,连续存放。
[!warning]
时间关系,大量的练习题,没有做笔记,只记录了题目。自己思考加看课程足矣。
一维数组
定义
【存储类型】 数据类型 标识符 【下标】
初始化
- 不初始化
- 全部初始化
- 部分初始化
static
元素引用
数组名【下标】
数组名
数组名是表示地址的常量,也是数组的起始位置。
数组越界
练习部分
斐波那契数列前10项
1 |
|
数据排序
冒泡
1 |
|
选择法
1 |
|
进制转换
1 |
|
删除法求质数
1 |
|
二维数组
定义,初始化
【存储类型】 数据类型 标识符 【行下标】 【列下标】
[!note]
初始化时,行号可省,列号不可省
元素引用
数组名 【行标】【列标】
存储形式
顺序存储,按行存储
对于二维数组的深入理解
1
2
3
4
5
6
7
8
9
10
11
12
13
14int a[M][N] = {1, 2, 3, 4, 5};
int i, j;
printf("a = %p\n", a);
printf("a+1 = %p\n", a + 1);
for (i = 0; i < M; i++)
{
for (j = 0; j < N; j++)
{
printf("%p --> %d\n", &a[i][j], a[i][j]);
}
printf("\n");
}输出:
1
2
3
4
5
6
7
8
9a = 0x7ffcc2376f80
a+1 = 0x7ffcc2376f8c
0x7ffcc2376f80 --> 1
0x7ffcc2376f84 --> 2
0x7ffcc2376f88 --> 3
0x7ffcc2376f8c --> 4
0x7ffcc2376f90 --> 5
0x7ffcc2376f94 --> 0a+1
跨越了行而不是单个元素。
练习部分
行列互换
求最大值及其所在位置
求各行与各列的和
矩阵乘积
字符数组
定义,初始化,存储特点
【存储类型】 数据类型 标识符 【下标】…
- 单个字符初始化
- 用字符串常量初始化
输入输出
常用函数
常用函数
strlen
和sizeof
1
2
3
4
5
6
7
8
9
10
11
12size_t strlen(const char *s);
// strlen函数可以后去字符串的长度,不包括尾'\0'
// 以'\0'作为结束,所以对于"hello\0abc",abc就不计入
// sizeof是完整的识别。
char str[] = "hello\0abc";
printf("%d\n", strlen(str));
// out: 5
printf("%d\n", sizeof(str));
// out: 6strcpy
与strncpy
1
2
3
4
5
6
7
8
9
10
11
12
13
14char *strcpy(char *dest, const char *src);
// 把src内容拷贝到dest,以'\0'结束,返回dest的地址
// 当src大于dest,造成越界
char *strncpy(char *dest, const char *src, size_t n);
// 把src内容拷贝n个字节到dest
strcpy(str, "abcde");
puts(str);
// out: abcde
strncpy(str, "abcde", STR_SIZE);
puts(str);
// out: abcdestrcat
与strncat
1
2
3
4
5
6
7
8
9
10
11
12
13
14char *strcat(char *dest, const char *src);
// 把src补到dest后面
// 需要保证dest空间足够
char *strncat(char *dest, const char *src, size_t n);
// 把src拿最多n个字符到dest
strcat(str1, " ");
strcat(str1, "world");
// out:hello world
strncat(str, " ", STR_SIZE);
strncat(str, "world", STR_SIZE);
// out:hello worldstrcmp
与strncmp
1
2
3
4
5int strcmp(const char *s1, const char *s2);
// 返回两个字符串,ascii码的差值
int strncmp(const char (s1, const char *s2, size_t n);
// 指定比较前5个字符
练习部分
单词计数
多维数组
1 |
|
Linux下C语言教程-李慧芹老师-第五章
http://sinlatansen.github.io/2024/04/01/Linux下C语言教程-李慧芹老师-第五章/