当前位置:首页 » 《随便一记》 » 正文

初步了解c语言(二)

17 人参与  2023年05月08日 09:29  分类 : 《随便一记》  评论

点击全文阅读


注:此篇文章仅限初步了解,本小白后续会持续进行详解。

目录:

变量的使用变量的作用域和生命周期常量字符串转义字符注释?结尾

变量的使用

  我们通过加法来理解它的使用。

#include<stdio.h>int main(){int num1 = 0;int num2 = 0;//给num1和num2赋予两个新的值scanf("%d %d", &num1, &num2);//求和int sum = num1 + num2;printf("sum = %d\n", sum);return 0;}

?一些简单解释:
1.scanf和printf是库函数,即c语言的编译器提供的现有并可以直接使用的函数函数,在使用这两个库函数时,需要包含头文件<stdio.h>
2.scanf函数的作用:输入数据——将数据从键盘读取到内存中。
  printf函数的作用:输出数据——数据从内存输出到屏幕上。
3.


变量的作用域和生命周期

  作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域.

?简单的来讲,变量哪里可以用,哪里就是它的作用域。

  局部变量作用域示意图:


全局变量作用域:
?在任意地方都可以使用!!!

通过两个代码来说明这个问题:


1.一个文件内:

#include<stdio.h>int a = 10;//函数测试void test(){printf("第三个:%d\n", a);}int main(){printf("第一个:%d\n", a);{printf("第二个: %d\n", a);}test();return 0;}

❗️结果如下:

我们可以看到,在一个文件内,全局变量在哪里都可以使用。


多个源文件:
例如:
第1个文件:
int num = 10;

      第二个文件:

#include<stdio.h>//声名外部符号。extern int num;int main(){printf("%d\n", num);return 0;}

❗️结果如下:

?通过这两个例子,我们可以看出,全局变量的作用域是整个工程。
正是因为可以在整个工程使用,所以会变得不安全,要尽可能避免使用。


  生命周期:变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。

局部变量的生命周期示意:

全局变量的生命周期:
  main函数的第一行开始运行直到结束,全局变量都可以使用。

?所以:全局变量的生命周期就是整个程序的生命周期。


常量

c语言中的常量有以下几种:

字面常量const 修饰的常变量#define 定义的标识符常量枚举常量

? 字面常量:
例如: 整数 1; 小数 1.5; 字符 ’a’ ; 字符串 “abcde”


?const 修饰的常变量:
例:

#include<stdio.h>int main(){int num = 10;printf("%d\n", num);num = 100;printf("%d\n", num);return 0;}

❗️结果:

现在我们将num变量前面加上const 。
例:

#include<stdio.h>int main(){const int num = 10;printf("%d\n", num);num = 100;printf("%d\n", num);return 0;}

❗️结果:无法编译运行。

❓ 原因是什么呢❓

?const 修饰的变量使得变量具有了常属性——不可被改变! 但是,这个本质上还是 变量


? #define 定义的标识符常量
例:

?在预编译阶段,其实就会将 num 直接替换为10,ch替换为‘a’,num1替换为1.0f


?枚举常量

枚举就是 一个一个列举 。

例如 : 列举性别,列举血型等等。 所以 c 语言引入关键字enum。

enum SEX{//一一列举性别的可能MAX,FEMALE};

此处细节会在后期详细解释!


字符串

字符,简单的来说,键盘上可以敲出来的任何符号都是字符。而字符串,其实就是一串字符。例如:”Hello World“ 。

这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。

注意:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。
例:

int main(){char arr[] = "abcdef";return 0;}

  监控一下数组,可以发现有一个\0.

  其实这个\0是字符串的结束标志。

  用代码解释这个标志:

#include<stdio.h>int main(){char arr1[] = { 'a','b','c','d' };char arr2[] = "abcd";printf("%s\n", arr1);printf("%s\n", arr2);return 0;}

❗️结果如下:

❓对于这种现象如何产生的呢?


  而且,在使用strlen(一个库函数,用来计算字符串长度,从给定的地址计数,直到遇到\0才停止)计算字符串长度时,对于上述arr1 的情况,由于无法确定\0的具体位值,所以结果会是随机值。


转义字符

转义字符释义
\ ?在书写连续多个问号时使用,防止他们被解析成三字母词
\ ’用于表示字符常量’
\“用于表示一个字符串内部的双引号
\ \用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a警告字符,蜂鸣
\b退格符
\f进纸符
\n换行
\t水平制表符
\v垂直制表符
\dddd d d表示1~3个八进制的数字。 如: \130 表示字符X
\xddd d表示2个十六进制数字。 如: \x30 表示字符0

一些简单的解释:计算机可以识别二进制,由于字符的不方便储存,所以对字符进行了编号,例如‘a’ —— 97 等等,这种编码就是ASCII 编码,编号就是ASCLL码值。

例如:printf("%c", '\130');
此时130是八进制,转换为十进制是88,对应ASCLL表,可见结果为 X。


注释

代码中有不需要的代码可以直接删除,也可以注释掉?代码中有些代码比较难懂,可以加一下注释文字

// 注释
注: 以//开头的注释风格是属于c++的,在c99标准之后,也进行了引入。

/* int a = 0; */
注:这种形式(/* */)是c语言的注释风格。

c语言的注释风格是不可以嵌套的,但是c++的注释风格可以。


?结尾

之后的内容,本小白会持续更新,刚开始写博客,有不足的地方还请各位大佬多多指正,非常感谢!


点击全文阅读


本文链接:http://zhangshiyu.com/post/61493.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1