前言
接着上一篇的学习内容。本文任然是C语言基础内容快速预览。
4、字符串+转义字符+注释
4.1 字符串
定义单个字符必须用单引号,且单引号内只能包含一个字符,输出字符用%c即可。
char ch1 = 'abc';//错误的
char ch2 = 'c';//正确
//输出字符用%c
printf("%c\n", ch1);
printf("%c\n", ch2);
按ctrl+F5运行程序,输出结果如下:
我们发现ch1 输出并不是想象的abc。
ch2 是正确的。所以单引号只能定义一个字符。
多个字符在一起就是字符串了,例如定义字符串abc,需要用双引号括起来。arr[]表示数组,括号内可以不写数字。输出字符串用%s表示。也可以写成下面的单引号形式。
char arr1[] = "bit";
学习字符串需要注意的是:
字符串的结束标志是一个 \0 的转义字符。 在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。字符串输入也可以写成下面的单引号形式,例如输出arr3[ ]和arr4[ ]:
char arr3[] = { 'b','i','t' };
char arr4[] = { 'b','i','t','\0'};
对比输出结果,发现arr1[ ]和arr4[ ] 的输出的结果相同,arr3[ ] 却是乱码的。
要分析原因,需要观察字符串变量arr1[ ]、 arr3[ ] 、arr4[ ] 在程序中的变化。
在程序界面,键盘上按F10,程序进入调试,界面会显示正在调试,点击调试—窗口—监视—监视1,见下图
在下面的监视窗口输入arr1、arr3、arr4,然后按回车或者点击空白处就行了。黄色箭头代表程序运行调试到哪一步了。
接着按下F11,程序开始单步调试,字符串变量在没有初始化之前,都是随机的。
继续按F11,初始化结束后,会看到3个变量的值已经都被赋值了。
点击旁边的小三角形,变量的具体内容就会展示出来,就会惊讶的发现,看似三者都是输入字符串bit,结果大不一样,arr1、arr4都是以字符‘\0’结尾,arr3中却没有。
arr1采用双引号输入字符串,末尾是默认包含结束字符’\0’的;arr3的输入是没有的;arr4是主动添加的。同时输出三个字符串和它们的长度:
由于arr1和arr4有结束字符’\0’在末尾,字符串就结束了,输出值是bit,长度是3个字符。
arr3没有结束字符’\0’在末尾,所以在内存中,其末尾会存有一些不知道是什么的随机值,这样输出就是乱码的,而长度15更是不对,都不知尾巴后面跟着些什么乱七八糟的东西。
因此建议在输入字符串时用双引号的形式,带括号的形式会忘记主动添加 ‘\0’ ,从而引起不容易检查出来的错误。
4.1 转义字符
要在屏幕上打印一个目录: c:\code\test.c
int main()
{
printf("c:\code\test.c\n");
return 0;
}
应该改成下面的形式
printf("c:\\code\test.c\\n");
int main()
{
printf("%c\n", '\'');//在屏幕上打印一个单引号'
printf("%s\n", "\"");//在屏幕上打印一个字符串,字符串的内容是一个双引号“
return 0;
}
运行下面程序,输出字符串长度
#include <stdio.h>
int main()
{
printf("%d\n", strlen("abcdef"));
// \62被解析成一个转义字符
printf("%d\n", strlen("c:\test\628\test.c"));
return 0;
}
这里按照上文提到的用监视变量的方法,可以一目了然的观察到字符串变量arr的变化,包含14个字符,长度是14,末尾包含结束字符’\0’,这是隐藏的,且不算作字符内容,仅仅表示字符串到此结束了。
5、注释
- 代码中有不需要的代码可以直接删除,也可以注释掉
- 代码中有些代码比较难懂,可以加一下注释文字
int add(int x, int y)
{
return x - y;
}
/*C语言风格的注释
int add(int x, int y)
{
return x - y;
}*/
int main()
{
//C++注释风格
//int a = 10;
//调用add函数,完成加法
printf("%d\n", add(1,2));
return 0;
}
6、选择语句
如果你好好学习,校招时拿一个好offer,走上人生巅峰。
如果你不学习,毕业等于失业,回家卖红薯。
这就是选择!
int main()
{
int coding = 0;
printf("你会去敲代码吗?\n");
printf("选择1 or 0)");
scanf("%d", &coding);
if(coding == 1)
{
prinf("坚持,你会有好offer\n");
}
else
{
printf("放弃,回家卖红薯\n");
}
return 0;
}
7、循环语句
C语言中重复执行的语句就是循环,有三种形式:
- while语句
- for语句
- do … while语句
下面举例while循环,其它两个循环后面再更新
int main()
{
printf("加入大厂\n");
int line = 0;
while(line<=20000)
{
line++;
printf("我要继续努力敲代码\n");
}
if(line>20000)
printf("好offer\n");
return 0;
}
8、函数
下面是一个简单的求两个输入整数的和,并打印出来。没学函数之前的写法:
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("输入两个操作数:>");
scanf("%d %d", &num1, &num2);//输入函数
sum = num1 + num2;
printf("sum = %d\n", sum);
return 0;
}
将加法的语句写成函数以后,函数的特点就是简化代码,代码复用:
int Add(int x, int y)//加法的函数定义
{
int z = x+y;
return z;
}
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("输入两个操作数:>");
scanf("%d %d", &num1, &num2);
sum = Add(num1, num2);//调用函数
printf("sum = %d\n", sum);
return 0;
}
9、数组
C语言规定:数组的每个元素都有一个下标,下标是从0开始的。数组中的可以通过下标来访问的。
下面定义了一个包含10个元素的数组arr1[10],初始化都为0。下标的范围是0-9。
int arr1[10] = {0};//定义了一个包含10个元数的数组,初始化都为0
///如果数组10个元素,下标的范围是0-9
int main()
{
int i = 0;
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
for(i=0; i<10; i++)//for循环打印数组中的10个元数
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
总结
C语言基础内容还没结束,本文主要是想介绍VS2017 简单的调试功能,并在窗口中监视变量的变化,对后续复杂程序的学习有很大的帮助。
F10 程序进入调试界面
F11 单步调试
shift+f11 结束调试