【手撕C语言 第二集】初识C语言

​​在这里插入图片描述

一、变量的作用域和生命周期

作用域:一个变量在哪里可以使用它,哪里就是它的作用域。
局部变量的作用域:变量所在的局部范围
全局变量的作用域:整个工程

不管整个工程里面有多少源文件,都可以使用全局变量。这样的弊端是不安全。
比如:
在add.c文件中定义全局变量,int g_val=2022
在test.c文件中想要使用add.c文件中定义的全局变量
extern int g_val; //需要声明外部符号
int main(){
printf(“%d\n”,g_val);
return 0;
}

生命周期:
局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束
全局变量的生命周期:整个程序的生命周期

二、常量

分类

(1)字面常量

100 整形字面值
‘w’ 字符字面值
3.14 浮点型字面值
“abcd” 字符串常量

(2)const修饰的常变量

const int num=9;
这里的num是const修饰的常变量。const修饰的常变量在C语言中只是在语法层面上限制了变量num不能被修改,但是num本质上还是一个变量,所以叫常变量。

const int n=10;
int arr[n]=0;
以上这样的写法是不对的,因为n虽然被const修饰,具有了常属性,不能被修改,但本质上还是变量,所以不能用来指定数组的大小。

int n=9;
int arr[n];
以上代码是在支持C99编译器上可编译的。C99中,引入了变长数组的概念,变长数组的大小是可以使用变量来指定的,但是数据不能初始化。

在VS2019中是不支持C99的变长数组的,所以没法验证。
在Linux中的gcc编译器是支持变长数组的。

(3)#define定义的标识符常量

#define定义的标识符常量,可以写在{}中,不能被修改,可以用来自指定数组的大小。

#define Max 100
printf(“%d\n”,MAX);

(4)枚举常量

枚举 enum
性别:男、女、秘密
三原色:RED GREEN BLUE
enum Sex{
male,
female,
secret
};
enum Sex是声明的一个表示性别的枚举类型
下面三个符号是这个枚举类型的未来的可能取值

enum Sex s=female;
用这个枚举类型创建的变量s,用枚举类型的可能取值进行赋值

priintf(“%d\n”,female);
注意:枚举常量的默认是从0开始,依次向下递增1的
如果想要指定枚举常量的某个值,可以自己在枚举类型的可能取值中进行赋值
enum Sex{
female=11,
male,
secret
};

三、字符串

"hello bit.\n"

这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符
串。
注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串
内容。

#include <stdio.h>
//下面代码,打印结果是什么?为什么?(突出'\0'的重要性)
int main()
{
   
char arr1[] = "bit";
char arr2[] = {
   'b', 'i', 't'};
char arr3[] = {
   'b', 'i', 't''\0'};
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
return 0;
}

在这里插入图片描述
在这里插入图片描述

strlen是一个库函数,专门求字符串长度,头文件是string.h
strlen从起始位置开始数,统计\0字符前出现的字符个数

四、转义字符

转义字符顾名思义就是转变意思

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

#include <stdio.h>
int main()
{
   
//问题1:在屏幕上打印一个单引号',怎么做?
//问题2:在屏幕上打印一个字符串,字符串的内容是一个双引号“,怎么做?
printf("%c\n", '\'');
printf("%s\n", "\"");
return 0;
}

在这里插入图片描述

笔试题

//程序输出什么? 14
#include <stdio.h>
int main()
{
   
	printf("%d\n", strlen("abcdef"));
	// \62被解析成一个转义字符
	printf("%d\n", strlen("c:\test\628\test.c"));
	return 0;
}

\ddd
ddd是8进制数数字(0~7)
\62被解析成一个转义字符

五、注释

  1. 代码中有不需要的代码可以直接删除,也可以注释掉
  2. 代码中有些代码比较难懂,可以加一下注释文字
    比如
#include <stdio.h>
int Add(int x, int y)
{
   
return x+y;
}
/*C语言风格注释
int Sub(int x, int y)
{
return x-y;
}
*/
int main()
{
   
//C++注释风格
//int a = 10;
//调用Add函数,完成加法
printf("%d\n", Add(1, 2));
return 0;
}
比特就业课-专注IT大学生就业的精品课程
比特主页:https://m.cctalk.com/inst/s9yewhfr

注释有两种风格:
C语言风格的注释 /xxxxxx/
缺陷:不能嵌套注释
C++风格的注释 //xxxxxxxx
可以注释一行也可以注释多行

六、选择语句

如果你好好学习,校招时拿一个好offer,走上人生巅峰。
如果你不学习,毕业等于失业,回家卖红薯。
这就是选择!

#include <stdio.h>
int main()
{
   
int coding = 0;
printf("你会去敲代码吗?(选择1 or 0):>");
scanf("%d", &coding);
if(coding == 1)
{
   
prinf("坚持,你会有好offer\n");
}
else
{
   
printf("放弃,回家卖红薯\n");
}
return 0;
}

七、循环语句

C语言中如何实现循环呢?
🎗️while语句-讲解
🎗️for语句(后期讲)
🎗️do … while语句(后期讲)

//while循环的实例
#include <stdio.h>
int main()
{
   
	printf("加入学校\n");
	int line = 0;
	while (line <= 20000)
	{
   
		line++;
		printf("我要继续努力敲代码\n");
	}
	if (line > 20000)
		printf("好offer\n");
	return 0;
}

八、函数

函数的特点就是简化代码,代码复用

#include <stdio.h>
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;
}
上述代码,写成函数如下:
#include <stdio.h>
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;
}
int arr[10] = {
   1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素

九、数组

要存储1-10的数字,怎么存储?
C语言中给了数组的定义:一组相同类型元素的集合

1.数组定义

整型数组

int arr[10] = {
   1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素

字符数组
两种方法
(1)

char arr[]="bit";

(2)

char arr[]={
   'b','i','t'};

2.数组的下标

C语言规定:数组的每个元素都有一个下标,下标是从0开始的。
数组可以通过下标来访问的。
比如

int arr[10] = {
   0};
//如果数组10个元素,下标的范围是0-9

在这里插入图片描述

3.数组的使用

#include <stdio.h>
int main()
{
   
int i = 0;
int arr[10] = {
   1,2,3,4,5,6,7,8,9,10};
for(i=0; i<10; i++)
{
   
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}

在这里插入图片描述

十、操作符

算术操作符
在这里插入图片描述
移位操作符
在这里插入图片描述
位操作符
在这里插入图片描述
赋值操作符
在这里插入图片描述
单目操作符
在这里插入图片描述
关系操作符
在这里插入图片描述
逻辑操作符
在这里插入图片描述
条件操作符
在这里插入图片描述
逗号表达式
在这里插入图片描述
下标引用、函数调用和结构成员
在这里插入图片描述

相关推荐

  1. C#语言

    2024-01-21 12:26:02       58 阅读
  2. C语言

    2024-01-21 12:26:02       66 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-21 12:26:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-21 12:26:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-21 12:26:02       82 阅读
  4. Python语言-面向对象

    2024-01-21 12:26:02       91 阅读

热门阅读

  1. 微服务架构所面临的技术问题

    2024-01-21 12:26:02       55 阅读
  2. http和https详细解析

    2024-01-21 12:26:02       50 阅读
  3. Ubuntu22 启动后只有鼠标没有桌面

    2024-01-21 12:26:02       53 阅读
  4. SpringBoot开启 Actuator springboot开启actuator监控信息

    2024-01-21 12:26:02       60 阅读
  5. 面试问题记录【深圳,共三面,A 轮公司】

    2024-01-21 12:26:02       46 阅读
  6. leetcode上两个字符串之间的动态规划类题目

    2024-01-21 12:26:02       47 阅读
  7. 魔域新端辅助背包遍历

    2024-01-21 12:26:02       43 阅读