不要眼高手低
文章目录
第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次直播 指针的应用
指针的使用场景
指针的传递
- 函数调用的 值传递与引用传递
值传递


引用传递
-
因为传递过去的是地址,所以然后使用解引用即可。

-
这也就是为什么,数组可以通过
arr[1] = 6; ,进行修改值,数组传递的就是指针。
指针的偏移
- 数组名
a类型是数组,a里边存了一个值,是地址值,是数组的起始地址,

运用,这种指针偏移技术可以巧妙的输出数组的元素

本文介绍了C语言中的指针使用,包括指针定义、取值与取地址符,以及指针在函数参数传递中的应用。同时,讲解了字符串处理函数如gets()、puts()、strcpy()和strcmp()的用法,强调了使用fgets()替代gets()的安全性。在处理字符串时,重点讨论了如何处理包含空格的输入,并展示了如何利用指针偏移来访问数组元素。
1429

被折叠的 条评论
为什么被折叠?



