C语言学习笔记系列—第四章

1,字符串

字符串部分内容在书中讲解时候略微复杂,简单来说字符串就是多个或一个字符组成的序列(再简单点就像是“I am IT Mr. Positive Energy”正能量IT先生,对于引号中的部分就是属于字符串),当然补充一点——双引号不算是字符串的一部分,双引号是用作告诉C语言编译器括起来的是字符串。

衍生知识点,第三章节学到了char类型,大家还有没印象呀!但是只是使用了单个字符,单个字符使用的就是单引号'Z'

1.1,Code Runner配置调试

在开始讲解程序前,特别补充注意:本章程序第一次涉及使用scanf()函数,这是C语言中初学者最长用到的一种输入函数。在第一章中留下了一个红色字体的问题就是Run Code插件默认配置情况下不进行输入,所以要求对插件进行设置,方法如下:

在设置->Code Runner->code-runner:Run in Terminal 勾选(不用重启) 解决了Code Runner无法输入问题

点击扩展设置:

勾选code-runner:Run in Terminal :

1.2,字符串知识点程序案例

完成插件部分的配置修改后进入正题,本次案例将会尽量简便说清,并且不使用复杂的逻辑。

程序如下:

#include <stdio.h>
int main(void)
{
    char name[30];     //
    
    printf("What's your name? ");
    scanf("%s", name);   //字符串类型的输入时,不需要加&
    printf("Hello, %s. %s\n", name, "You are a person with potential.");
    return 0;
}

首先这个程序中引用了%s,这个是为了告诉printf()要输出一个字符串。在第8行中使用了两个%s用来打印字符串:分别是存name变量中的字符串,一个是由双引号括起来的字符串。对应的输出结果如下:

What's your name? CY
Hello, CY. You are a person with potential.

此处特别注意如果输入的:CY是C Y(有空格分开)那么输出结果会变成Hello, C. You are a person with potential.可以发现程序只读到了C,在遇到空格后就不再读取输出的值了。所以还可以使用gets()用于输入,也就是将文章中第七行:

scanf("%s", name);

替换为:

gets(name);

就可以使用匹配输入字符串了,输入内容中间就算有空格也不会受到影响了。

2,#define指令

首先大家已经都快背下来了学习C语言中第一行要使用#来预处理程序内容,#define指令类似是在程序一开始就定义了参数变量,这样做的目的是为了简化程序,增加程序的可读性(个人认知有限,大佬们可以补充)。比如一个最简单的例子(书中用的圆周率,那我就换一个简单的):初中物理都学过重力G=mg,g是一个常量默认是9.8。那么程序就是:

#include <stdio.h>
int main(void)
{
    float m;
    float G;
    printf("Please enter the weight of the object:\n");
    scanf("%f",&m);
    G = m * 9.8;
    printf("Gravity = %.2f\n",G);

}

也就是说在程序中默认了g是9.8,那么如果在程序中直接使用G=m * g会增强程序的可读性,而且假如这个g会变化不是地球默认的9.8而是月球整个程序都需要去修改9.8 。就显得有那么一丝丝的辛苦了,那么怎么办呢?嘿嘿#define出场:

#include <stdio.h>
#define GRAVITATIONALACCELERATION 9.8     //变化在这里
int main(void)
{
    float m;
    float G;
    printf("Please enter the weight of the object:\n");
    scanf("%f",&m);
    G = m * GRAVITATIONALACCELERATION;     //变化在这里
    printf("Gravitational acceleration of object= %.2f\n",G);

}

上边可见直接将重力加速g预先处理定义为了9.8,特别注意,其中并没有=符号。为什么需要用大写字母是C语言一贯的传统。在程序中看到全大写的名称一眼就看出这是一个符号常量,而非变量。

#define GRAVITATIONALACCELERATION 9.8

3,const限定符

const这个关键字是为了将一个变量的值固定,类似直接将权限变成了只读文件一样。

const int MONTHS = 12; // MONTHS在程序中不可更改,值为12

这样以来MONTHS这个变量就被锁定为12了,怎么三百六十度托马斯回旋这个变量还是12,相比较#define,const用起来更灵活。

4,本章小结

本章介绍了C语言中使用的字符串概念以及C语言中的预处理指令(以#符号开始)查找源代码程序,并在开始编译程序之前处理它们,同时还介绍了可以使用const限定符创建定义后就不能修改的变量。

滚动至顶部