不要眼高手低
第09次直播 gets()与puts()
上次直播思考
- 思考: 为什么在打印整型数组的时候需要传递数组的长度,而在打印字符数组的时候不需要传递
解法如下: 巧妙利用字符串结束标志为 '\0'
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void print(char d[]) {
int i = 0;
while (d[i] != '\0') {
printf("%c", d[i]);
i++;
}
printf("\n");
}
int main08() {
char c[10] = "hello";
print(c);
printf("Hello world");
return 0;
}
注意:
- 不能使用gets的VS,请使用下面操作 等价于
fgets(c, sizeof(c), stdin); fgets 相对于gets去读取标准输入时,会把\n 放到字符数组中,即为把输入回车结束,也进行存储。
解决方法如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main() {
char c[100];
fgets(c, sizeof(c), stdin);
int len = strlen(c);
c[len - 1] = '\0';
puts(c);
return 0;
}
问题引入
scanf 通过%s 读取字符串时,当遇到空格以后,就会匹配结束,这样没办法把一行带有空格的字符串存入到一个字符数组中心puts 只能输出字符串
常见字符串函数的使用
strcpy
char *strcpy(char *to, const char *from)
strcmp
strcat 拼接两个字符串,目标数组要能够容纳拼接后的字符串
第09次直播 指针
指针的定义
- 使用指针的需求 将某地址保存下来
- 指针使用的场景 传递与偏移
指针的定义格式如下
基类型 * 指针变量名
取值符与取地址符
- 取地址操作符为
& ,也称引用,通过该操作符我们可以获取一个变量的地址值;取值操作符为* ,也称解引用,通过该操作符我们可以得到一个地址对应的数据。如下图所示,我们通过&i 获取整型变量i的地址值,然后对整型指针变量p进行初始化,p中存储的是整型变量i的地址值,所以通过第12行的*p 就可以获取整型变量i的值。P中存储的是一个绝对地址值,那为什么取值时会获取4字节大小的空间呢?这是因为p为整型变量指针,每个int型数据占用4字节大小的空间,所以p在解引用时会访问4字节大小的空间,同时以整型值对内存进行解析。
第10次直播 指针的应用
指针的使用场景
指针的传递
值传递 引用传递
指针的偏移
- 数组名
a 类型是数组,a 里边存了一个值,是地址值,是数组的起始地址,
运用,这种指针偏移技术可以巧妙的输出数组的元素
|