字符串
"abcdef"
由字符号串引起来的一串字符被称之为字符号串字面值,或者简称字符号串
注:字符串的结束标志是\0的转义字符,在计算字符串长度的时候\0是结束的标志,不算做字符号串内容
进入调试模式可以看到字符串末尾隐藏了一个\0是字符号串结束的标志
字符串第二种需要手动添加字符串结束的标志
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
int main() {
char ch = 'c';
// c语言中有没有字符串类型
char arr[] = "abcdef";
printf("%s\n", arr);
char arr2[] = { 'a','b','c','d','e','f' ,'\0'};
printf("%s\n", arr2);
return 0;
}
strlen 求取字符串长度的库函数,使用strlen需要引用头文件string.h
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include <string.h>
int main() {
char ch = 'c';
// c语言中有没有字符串类型
char arr[] = "abcdef";
printf("%s\n", arr);
char arr2[] = { 'a','b','c','d','e','f' ,'\0'};
printf("%s\n", arr2);
int len = strlen("abc");
printf("len = %d\n", len);
return 0;
}
字符号串结束的标志是很重要的没有\0结尾的情况下使用strlen求取字符号串长度可能会出现一个随机的值。
转义字符
定义:转义字符就是转变原来字符含义的字符 使用\来表示
c语言中的转义字符
%d --- 打印整形,输出一个10进制的数
%c --- 打印字符 ,输出字符类型的数据
%s --- 打印字符串 ,输出字符串类型的数据
%f --- 打印浮点数或小数 ,输出浮点数或者是小数数据
%lf --- 打印double类型的数据 ,输出双精度类型的小数数据
%zu --- 打印sizeof()的返回值 ,输出sizeof打印的返回值
字符: \? 用法: 在书写连续的多个问号时使用,防止他们被解析成三字母字符
字符 ' 用法:用于表示字符常量' 让单引号不再是一对单引号中的某一个
字符 \ 用于表示一个反斜杠,防止他被编译器解析为转义字符
字符 \ b 表示退格符
字符 \f 表示进纸符
字符 \n 表示换行
字符 \r 表示回车
字符 \t 表示制表符
字符 \v 表示垂直制表
字符 \ddd ddd表示1-3个8进制数字
字符 \xdd dd 表示2个16进制的数字
字符 \a 蜜鸣符,触发电脑声音
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include <string.h>
/*
c 语言中的打印字符
%d --- 打印整形
%c --- 打印字符
%s --- 打印字符串
%f --- 打印浮点数或小数
%lf --- 打印double类型的数据
%zu --- 打印sizeof的返回值
*/
int main() {
printf("abcd\??\n");
printf("%c\n", '\'');
printf("abcdef\\0\n");
// 字符串路径打印的写法
printf("c:\\test\\test.c\n");
printf("\a");
return 0;
}
以上程序输出的结果
注:转换出来的ASCII值要包含在ASCII的范围内也就是0-127之间,超出这个范围就没有意义了
转义字符练习
【求字符串长度】
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include <string.h>
int main() {
//在这里\0也算是字符
printf("%d\n", strlen("qwer t"));
printf("%d\n", strlen("c:\test\628\test\.c"));
return 0;
}
注:在C语言中\t在字符串里面是一个字符
C语言中的注释
在C语言中,注释是用来解释代码功能或提供阅读代码所需信息的一种文本,它不对程序的功能产生直接影响,编译器在编译过程中会直接忽略注释内容。C语言支持两种类型的注释方式: 还有一种额外的注释方式
单行注释:
// 这是一个单行注释的例子
int x = 5; // 初始化x为5
多行注释:
/*
* 这是一个
* 多行注释的例子
*/
int y = 10; /* 初始化y为10 */
推荐的注释方式
在有些语言中,注释有时用于把一段代码“注释掉”,也就是使这段代码在程序中不起作用,但并不将其真正从源文件中删除。在C语言中,这可不是个好主意,如果你试图在一段代码的首尾分别加上/*和*/符号来“注释掉”这段代码,你不一定能如愿。如果这段代码原先就存在注释这样做会出问题。要从逻辑上删除一段C代码,更好的办法是使用#if指令。只要像下面这样使用:
#if 0
注释的内容
#endif
在#if和#endif之间的程序段就可以有效地从程序中去除,即使这段代码之间原先存在注释也无妨,所以这是一种更为安全的方法,预处理指令的作用远比你想象的要大。
注:
-
注释不应嵌套使用,特别是在多行注释中。虽然某些编译器可能允许嵌套的多行注释,但这不是标准行为,且可能导致难以预料的结果或编译错误。
-
确保注释是及时更新的,反映代码的真实意图和功能,避免误导读者。
-
注释应当简洁明了,提高代码的可读性和可维护性。
注释的作用,对复杂的代码进行解释,提高代码的可读性,写代码的时候写注释是帮助自己帮助别人
补充小知识
学会画图:方便理解内存和指针
通过练习:巩固熟悉语法,练习锻炼编程思维,把实际问题转换为代码能力
调试:借助调试更高的理解和感知代码,借助调试找出代码中的bug
C语言语句
选择语句
if else 语句
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include <string.h>
int main() {
printf("Start study\n");
printf("improve\n");
int input = 0;
scanf("%d",&input);
// 分支循环语句
if (input == 1) {
printf("you will have a top offer\n");
}
else {
printf("you will not have a top offer\n");
}
return 0;
}
循环语句
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include <string.h>
int main() {
int len = 0;
printf("inter this bite\n");
while (len < 20000) {
printf("write code");
len++;
}
if (len == 20000) {
printf("good offer\n");
}
else {
printf("继续加油\n");
}
return 0;
}
C语言函数
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include <string.h>
#define add(x,y) ((x) + (y))
int ADD(int x,int y) {
return x + y;
}
int main() {
int n1 = 0;
int n2 = 0;
int sum = ADD(15,20);
printf("%d\n", sum);
return 0;
}
函数的使用
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include <string.h>
#define add(x,y) ((x) + (y))
int ADD(int x,int y) {
return x + y;
}
int main() {
int n1 = 0;
int n2 = 0;
// 获取用户输入
scanf("%d %d",&n1,&n2);
int sum = ADD(n1, n2);
printf("%d\n", sum);
return 0;
}
函数解析
数组
-------------------------C语言中的数组------------------------------------------------------------------
数组:要存储一组数据的时候,c语言中对数数组的定义 “一组相同类型元素的集合”
数组是由下标的,数字的下标是从0开始的,数字是通过下标的方式一个个访问数组中的元素的
遍历数组:使用for循环的方式
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include <string.h>
int main() {
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int i = 0;
int length = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i < length; i++) {
printf("%d\n", arr[i]);
}
return 0;
}