说明(文中VS为Microsoft Visual Studio的简称)
一.关于scanf()函数报错问题的补充
scanf()函数为C语言所提供
scanf_s()函数为VS编译器所提供--->无法移植到非VS平台上编译运行(如GCC)---->不具有跨平台性
所以应优先选用scanf()函数
scanf()函数被VS认定为不安全的函数而scanf_s()函数被VS认定为安全的函数所以可能会出现错误
如果在编译过程中出现警告或者错误可以在工程的源文件中第一行添加
#define _CRT_SECURE_NO_WARNINGS 1
语句来屏蔽警告或错误
2.自动添加#define _CRT_SECURE_NO_WARNINGS 1 语句的方法
(1. 找到VS的安装路径,可以点击桌面的VS图标,选择打开文件位置,这时候路径为C:\Program Files(x86)\Microsoft Visual Studio 10.0\Common7\IDE
我们点击后退键,使路径变成C:\Program Files(x86)\Microsoft Visual Studio 10.0\VC 如图所示:
(2. 双击打开vsprojectitems文件夹,如图所示:
(3. 找到其中的newc++file.cpp文件,如图所示:
(4. 选择文件右击,选择打开方式,使用记事本打开,将#define _CRT_SECURE_NO_WARNINGS 1 写入文件,并使用Ctrl+S快捷键进行保存,如果保存失败可以下载Notepad++程序进行强制保存
(5. 至此以后每一个源文件创建时都会自动在第一行自动填写#define _CRT_SECURE_NO_WARNINGS 1
2.局部变量和全局变量的区别
(1.放在main()函数中的变量称为局部变量
(2.局部变量不一定全在main()函数中
二.常量的分类
常量分为:
(1.字面常量
(2.const修饰的常变量
(3.#define定义的标识符常量
(4.枚举常量
1.字面常量的定义方式,如图所示:
2.const常变量的定义方式,如图所示:
在数据类型前加上const对变量进行修饰,一旦进行修饰,则下方代码不可以更改其值,但是const只是起到修饰的作用,其本质就是不可修改的一个变量,属性并不是常量,所以在声明数组容量中不可以使用图中的方法进行书写,否则可能会出现问题
3.#define定义的标识符常量,如图所示:
注意:#define为预处理指令,需要写在main()函数的前面,且定义常量时候不需要加 = 否则出错
建议:#define定义的常量名称应养成大写的好习惯
4.enum枚举常量,如图所示:
使用 enum 名称{
可能性1,
可能性2,
可能性3,
可能性n
};
的格式进行枚举常量
注意:枚举常量中大括号的内容是无法进行更改的,但是枚举常量定义的变量是可以进行更改的,如图所示:
三. 字符串+转义字符+注释
1.字符串的定义
由双引号引出来的一串字符称为字符串
字符串可以写成如下形式
"ABCDEFG";
"Hello\n"
""; 双引号中为空的字符串称为空字符串
2.字符串的存储与输出(数组),其代码可以书写成如下形式
char arr[] = "ABCDEFG"; //这是字符串的存储
printf("%s",arr); //使用printf()函数打印字符串内容,注意里面
的占位符不再是%d,而是%s
3.代码 char arr[] = "abc"; 与代码 char arr1[] = {'a',b','c'}; 输出的区别,如图
这时候需要启动监视窗口来监视值的变化
台式机按下F10 笔记本Fn+F10 会启动调试,这时候注意左侧的黄色箭头,按一下F10箭头就会执行一行代码,我们连续按下F10直到达第8行也就是printf()函数那一行停止,点击调试,选择窗口,选择监视,随便选一个窗口进行监视
输入变量名我这里是arr与arr1进行监视,监视结果如下:
我们发现arr1由四个值组成前三个分别对于abc三个字符 第四个是0,但是arr只有三个值组成
分别是a b c三个字符,没有出现0
随后修改代码,如图所示:
我们将arr数组后面加了一个0,这时候显示两个值显示相同,右侧的监视窗口也可以看到arr1与arr变量都由4个值组成
结论:arr1字符串中包含了 'a' 'b' 'c' '\0' 字符串中隐藏了一个 ‘\0’ 而 ‘\0’ 的值为0
由此得出 ‘\0’ 为字符串的结束标志,所有字符串结束标志都是'\0'
而arr变量一开始时并未有结束标志,所以就会一直打印,导致程序出现乱码
strlen()函数 用于计算字符串长度 用法 printf("%d",strlen(字符串名称)); 如图未添加0的arr字符串长度
注意:strlen()函数不会将 '\0' 算入字符串长度
arr中读取完a b c后由于未遇到 '\0' 的结束标志则会一直进行读取,直到遇到 '\0'的结束标志
2.转义字符---转变原来的意思
#include<stdio.h> #include<stdio.h>
int main(void) int main(void)
{ {
printf("abcn"); printf("abc\n");
return 0; return 0;
} }
这两段代码仅多出来一个 \ 号,以下是程序的运行结果
我们可以明显的看出来,在第一个程序中abcn被正常打印了出来,但是第二个程序中只打印出了abc,同时我们的光标也定位到了下一行
由此得出 \n 为换行的转义字符,以下是转义字符的一些例子如图
这段代码本意是打印出一个路径,但是运行后可以看到 \ t v 这些字符都消失了,本应有\t的地方变成了一片空白 \v 也是生成了一堆看不懂的东西,原因是\t \v 都是转义字符 \t为水平制表符 \v 是垂直制表符,所以会出现这样的情况
以下是常用的转义字符:
转义字符 |
意义 |
\a |
响铃(BEL) |
\n |
换行(LF) ,将当前位置移到下一行开头 |
\t |
水平制表(HT) (跳到下一个TAB位置) |
\v |
垂直制表(VT) |
\\ |
代表一个反斜线字符''\' |
\' |
代表一个单引号(撇号)字符 |
\" |
代表一个双引号字符 |
\? |
代表一个问号 |
转义字符算作一个字符
3.注释
(1. code //注释 C++注释风格
(2.code /*注释*/ C语言注释风格
注意:在C语言中注释从 /* 开始只要捕获到 */ 即为结束,所以无法用于注释的嵌套
#include<stdio.h>
/*
int main(void)
{
/*
int var = 10;
*/ 只能注释到这里,后面的内容无法被注释,所以建议使用 // 注释风格
return 0
}
选中需要注释的代码后使用快捷键,注释快捷键 Ctrl+K+C 取消注释快捷键 Ctrl+K+U
四. 循环语句
如图,此程序利用if语句对用户的输入进行判断并进行答复
C语言中的三种循环语句
(1.while循环语句
(2.for循环语句
(3.do...while...循环语句
while()语句的示例如图所示
while语句逻辑为:
while(进入循环的条件){
当满足条件进入循环后需要执行的代码
变量的自增
}
不满足条件后跳出循环继续执行下一行代码
以上为C语言第二课时的总结,谢谢!
2023/7/11
王起舟