今天抽空更一下。

    常量

    常量分为:1.字面常量:520、13.14、1。

                      2.const修饰的常变量:是不是疑惑+1?为什么要叫常变量?划重点!修饰!const修饰变量,被const修饰的变量叫做常变量,可以使变量具有常属性,也就是该变量在以后的使用中值不能进行改变,本质上还是个变量,比如说小日子过得不错的日本裁判带病上阵,乍一看十分敬业,实际上dddd!

int main()
{const int age = 19;
printf("%d\n",age);
int age = 20;
printf("%d\n",age);
return 0;}

    这串代码是跑不出来的!不信自己去试哈,实践出真知。

    因为当我们用const修饰了age了之后,就像上文说的"值不能改变",此时被const修饰的变量age相当于,在登记年龄的时候,一个名叫const的老师告诉代码这哥们“我们班的age是19岁”,可小崔又告诉代码“age是20岁”,但是迫于const是老师,所以代码认定了age是19岁,就这么定下来了,小崔又知道age是20,想再次登记,学校不给登,因为两次冲突了。So 跑不下来。

    但我们知道它本质上还是个变量,在某些必须用常量的地方,const修饰的常变量是不能用的!比如

int main()
{ const int age = 19;
int arr [age] = [0];
return 0;
}

    这串代码也跑不出来,老样子,不信就去试。

    因为在int arr [C] = [0]中的C必须的必是个常量!记住必须的必然是个常量!虽然C被const修饰成了一个常变量,可它本质上还是个变量,用在这里是不行的。再形象的打个比方:"黑山老妖age用易容术变成了仙,而孙悟空在南天门看门,拥有火眼金睛的孙悟空只允许仙进去,黑山老妖化成仙的样子刚站在门口就被识别出了本质是个妖,没办法进。"

                      3.#define定义的标识符常量:可以简单理解成定义常量的一种方式。举个例子:

#define Cui 19
#include <stdio.h>
int main ()
{
int arr [Cui];
printf("%d\n",Cui);
return 0;
}

    在代码开头,我们用#define来定义常量----定义常量Cui=19。这串代码跑出来的值就是19,但是用VS2019会出现警告如下(这里的警告跟Cui无关)

                                                                                                                                                      初识C语言_入门

    强迫症觉得不舒服的话可以初始化一下数组,写成下面这坨

#define Cui 19
#include <stdio.h>
int main ()
{
int arr [Cui] = [0];
printf("%d\n",Cui);
return 0;
}

                        4.枚举常量:枚举---列举,就是把常量一一列出来。(这个据说不常用)

  初识C语言_小白_02

    若要枚举常量,则要用到enum来列举常量。enum powerful country = China 的意思是用enum powerful 来创建一个变量country  而country的值必须是刚才列举的值中之一。

    了解就行了,感觉没啥用。直接用#define来定义常量就行。

    字符串

    

“China NO.1\0”

      上面那一坨由双引号引起来的一串字符叫做字符串字面值,顾名思义,它就是字符串。

        为啥有个\0?  别急,慢慢来,一会就说。

       初识C语言_入门_03 

     这串代码里我犯了一个错误,我在写第三行的数组的时候写成了int arr1[] = 'abc',记住啊,我们下文要用%s打印字符类型的数据,所以在上文不能用int 而要用char。你以为这样你就能正常跑出来个abc?那你估计比我还年轻。

      初识C语言_入门_04跑出来是这个样子。

    你以为我的CPU吃了麻辣烫把嘴烫了?并不是,这里就得讲\0了。"\0"的含义是字符串结束语,生物好的同学可以理解成终止密码子。

     在字符串里,比如说上面那一坨里的    char arr1 [] = "abc" ;  abc就是字符串,字符串后默认会有一个\0,意为abc就完事了。

                                                            而    char arr2 [] = {'a','b','c'}; a b c 分别为三个字符,不是字符串,所以后面并没有\0,此时在打印完c后,会出现烫烫烫烫蘟这一坨不知道是啥的东西,是因为在打印完c后没有让它结束,所以它就打了一串随机数,才出现了所谓的烫烫烫烫蘟。所以再打单个字符类型的数组,应在末尾加上0或\0。

       初识C语言_入门_05这样就行了。

    如果我们要计算这两个数组的长度,我们就要用到strlen()----string length计算字符长度

初识C语言_小白_06

   我们用strlen来计算字符长度的时候记得把%s改成%d。arr1跑出来是3。arr2跑出来是15。strlen会得到一个找到\0时的值作为长度。arr2就相当于找了15次才找到\0,因为'c'后并没有\0,所以会找一坨随机数,strlen找\0就像找老婆,找到为之。就算找了一坨随机数,最后的一定是\0。

    记得\0是结束语,也就是终止密码子,不算做字符串内容。