Day10 C基础(字符数组二维数组)

文章目录

  • 字符数组
    • 字符数组的输入输出
      • 输入
      • 输出
    • 计算字符串的实际长度
    • sizeof 和 strlen 的区别
  • 冒泡排序
  • 选择排序:
  • 二维数组
    • 1.格式:
    • 2.访问元素
    • 3.数组元素个数:
    • 4.二维数组的大小:
    • 5.数组名
    • 6.初始化
    • 内存分配

字符数组

字符数组的输入输出

输入

char str[32] = {};

1.scanf(“%c”, &str[i])
scanf(“%s”, str);
输入的字符串不能含有空格,因为 scanf 输入字符串遇到空格或 \n 都会认为字符串输入 结束,空格后面的内容就不再存放到数组当中
如果需要输入空格可以使用下面的格式:
scanf(“%[^\n]”, str);
2.gets
char *gets(char *s);
功能:从终端获取字符串
参数:s:目标字符数组的首地址
返回值:目标字符数组的首地址

输出

1.printf(“%s\n”, str);
2.for(int i = 0; i < 32; i++)
{
printf(“%c”, str[i]);
}
printf(“\n”);

3.puts
int puts(const char *s)
功能:向终端输出字符串
参数:s:要输出字符数组的首地址
返回值:输出字符的个数

计算字符串的实际长度

1.for循环遍历数组,直到 /0 为止
for(n = 0; buf[n] != ‘\0’, n++);
2.strlen
#include
size_t strlen(const char *s);
功能:计算字符串的实际长度(不包括 \0)
参数:s:要计算的字符串的首地址
返回值:字符串的实际长度

sizeof 和 strlen 的区别

1.sizeof是关键字,strlen是函数
2.sizeof 是计算数据所占空间大小,strlen 计算字符串的实际长度
3.sizeof 计算包括 \0,strlen计算不包括 /0,计算字符串长度时(元素个数省略情况下),sizeof比strlen 大1

冒泡排序

选择排序:

二维数组

1.格式:

存储类型 数据类型 数组名[行数][列数]
int arr[2][3];

2.访问元素

数组名[行下标][列下标]; (下标从0开始)
arr[0][0]:第一行第一列的元素
arr[1][2]:第二行第三列的元素
行下标、列下标都不能越界

行数可以省略,但是列数不能省略
int arr[][3];

3.数组元素个数:

行数 * 列数

sizeof(数组名) / sizeof(数据类型)

4.二维数组的大小:

sizeof(数组名)
数据类型大小* 元素个数

5.数组名

arr:第一行的首地址
arr+1:第二行的首地址

6.初始化

1)全部初始化:
int arr[2][3] = {1, 2, 3, 4, 5, 6};
printf(“%d %d %d\n”, arr[0][0], arr[0][1], arr[0][2]); // 1 2 3
printf(“%d %d %d\n”, arr[1][0], arr[1][1], arr[1][2]); // 4 5 6

2)部分初始化:未初始化的部分元素值为0
int arr[2][3] = {1, 2, 3, 4}; // 顺序赋值
printf(“%d %d %d\n”, arr[0][0], arr[0][1], arr[0][2]); // 1 2 3
printf(“%d %d %d\n”, arr[1][0], arr[1][1], arr[1][2]); // 4 0 0

int arr[2][3] = {{1, 2}, {4, 5}};  // 按行赋值   1 2 0 4 5 0

3)未初始化:随机值,需要单独的赋值
int arr[2][3];

内存分配

Day10 C基础(字符数组二维数组)_第1张图片

// a 和 a[0] 并不完全相同,级别不同,后面会讲,数值上是一样的,级别不一样
// a 是行地址
// a[0] 是列地址

// a 表示 第一行的首地址
// a+1 表示 第二行的首地址
// a[0] 表示第一行第一列的地址
// a[1] 表示第二行第一列的地址

你可能感兴趣的:(华清远见培训,c语言,算法)