【C语言基础学习笔记】一、初始C语言(2)

C语言基础学习笔记内容简单说明:初始c语言部分只是大概了解一下c语言的内容,很多地方不会深入探究,因为后面的章节会进行详细的讲解。
说明:我是一个初学c语言的小白,很多地方都不是很理解,所以就会自己动手敲代码进行相应的推理验证,希望可爱的你在看到这些步骤时,不要嫌弃我啰嗦。(比如吐槽:这作者咋这样呀,这么简单的还要敲代码验证,真菜呀!…我:好吧,我不装了,我摊牌了,我确实菜,真的菜,咋滴啦,还不允许初学者菜呀!)
内心独白:上一篇文章发布后,没想到阅读和支持的小可爱那么多,真的是非常感谢大家!也希望我的博客文章可以真正的帮助到每一个还在编程路上探索,摸爬滚爬…摸爬勒塔…摸爬滚摸…滚塔…滚勒…摸了摸…摸它滚塔…摸爬!摸爬滚塔!…摸爬滚打。(这普通话可真烫嘴QAQ…)


4.常量

c语言中的常量分为以下4种:
字面常量、const修饰的常变量、#define定义的标识符常量、枚举常量
①字面常量:1 100 3.14 22 A 等等…
②const修饰的常变量
变量是可以变化的值,但是被const修饰后,这个变量就不能变了
在这里插入图片描述
在这里插入图片描述
虽然被const修饰的变量叫做常变量,具有常属性,但其本质仍然是变量,而不是常量,所以不能放到数组的方括号[]中
在这里插入图片描述
在这里插入图片描述
③#define定义的标识符常量 举例: #define Max 10
在这里插入图片描述
④枚举常量 枚举:一一列举 例如 性别:男、女、保密
三原色:红、黄、蓝 星期:周一……周日
枚举关键字 enum
例如

enum Sex
{
    
    
	male,
	female,
	secert
};

其中male,female,secert就是枚举常量,枚举常量实际是有值的,我们可以将其值打印出来如下: enum Sex s 是枚举类型变量
在这里插入图片描述


5.字符串 + 转义字符 + 注释

①字符串
“hallo world” 这种由双引号引起来的一串字符称为字符串字面值,简称字符串
“” – - 空字符
注意:字符串的结束标志是一个 \0的转义字符。在计算字符串长度的时候\0是结束标志,不算做字符串的内容
用数组存储字符串的时候,数组的长度需要将\0计算上,只是单独计算字符串长度时不计算\0

int main()
{
    
    
	char arr1[] = "abc";
	char arr2[] = {
    
     'a','b','c' };
	printf("%s\n", arr1);
	printf("%s\n", arr2);
	return 0;
}

在这里插入图片描述

#include<stdio.h>
#include<string.h>
int main()
{
    
    
	char arr1[] = "abc";
	char arr2[] = {
    
     'a','b','c' };
	int a1 = 0;
	int a2 = 0;
	a1 = sizeof(arr1) / sizeof(arr1[0]);
	a2 = sizeof(arr2) / sizeof(arr2[0]);
	printf("%s\n", arr1);
	printf("%s\n", arr2);
	printf("a1 = %d\n", a1);
	printf("a2 = %d\n", a2);
	printf("Length of arr1 :%d\n", strlen(arr1));
	printf("Length of arr2 :%d\n", strlen(arr2));//没有结束标志,随机值
	return 0;
}

在这里插入图片描述
用F10(或Fn + F10)调试,打开监视窗口查看数组arr1,arr2
在这里插入图片描述
这里我们看到’a’前面有一个值97,这个是a的ASCII值
在这里插入图片描述
②转义字符
转义:转变原本含义 使其具有其他含义 一个转义字符的长度为1,例如\t 长度为一,不能计算成2,另外\0不计算到字符串的长度当中,仅当作字符串结束的标志。

#include<stdio.h>
int main()
{
    
    
	printf("c:\code\test,c\n");
	return 0;
}

在这里插入图片描述
调试:转义
在这里插入图片描述
在这里插入图片描述
③注释
注释有两种风格
/* */ c语言风格 缺陷:不能嵌套注释
// c++语言风格 (推荐)


6.选择语句

在我们的生活中,会有各种各样的选择,不同的选择,往往带来不同的结果。
在我们的人生中,也会遇到各种各样的选择,不同的选择会决定我们今后不同的人生轨迹。

#include<stdio.h>
//选择语句,人生会遇到各种各样的选择,选择不同,人生道路也会有所不同
int main()
{
    
    
	int a;
	printf("你会好好学习编程吗?:(1:会 0:不会)>>\n");
	scanf("%d", &a);
	if (a == 1)
		printf("好offer\n");
	else
		printf("loser\n");
	return 0;
}

在这里插入图片描述
if (条件判断) { 执行语句 }
else { 执行语句 }


7.循环语句

很多事情需要一直去做,比如老师需要日复一日,年复一年去教学。学习编程需要每天都去敲代码。

#include<stdio.h>
int main()
{
    
    
	int line = 0;
	while (line <= 100000)
	{
    
    
		printf("敲一行代码\n");
		line++;
	}
	if (line > 100000)
		printf("你可以得到一个好offer\n");
	return 0;
}

在这里插入图片描述
while(条件判断)
{
循环体
}

扫描二维码关注公众号,回复: 13134067 查看本文章

8.函数

简化代码,代码复用,分为自定义函数、库函数

int Add(int x, int y)
{
    
    
	int z = x + y;
	return z;
}
int main()
{
    
    
	int a = 10;
	int b = 30;
	int sum = 0;
	int num1 = 100;
	int num2 = 200;
	sum = Add(a, b);
	printf("sum = %d\n", sum);
	sum = Add(num1, num2);
	printf("sum = %d\n", sum);
	return 0;
}

在这里插入图片描述
函数返回类型 函数名(函数参数类型 函数参数1,函数参数类型 函数参数2…)
{
函数体
}


9.数组

用于存放一组相同数据类型的数据变量,数组的下标[]从0开始计算,a[0]代表第一个元素,具有n个元素的数组,其下标最大为n - 1。

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

在这里插入图片描述


10.操作符

(1)算术操作符
加法操作符 + 双目操作符 使两个数相加 1 + 2 = 3
减法操作符 - 双目操作符 使两个数相减 2 - 1 = 1
乘法操作符 * 双目操作符 使两个数相乘 2 * 3 = 6
除法操作符 / 双目操作符 使两个数相除,得到商 5 / 2 = 2
取模操作符 % 双目操作符 使两个数相除,得到余数 5 % 2 = 1
/ 两端均为整数的时候,执行整数除法;
两端只要有一个是小数,则执行小数除法。

#include<stdio.h>
int main()
{
    
    
	int a = 2;
	int b = 5;
	int c = b % a;
	printf("a+b = %d\n", a + b);
	printf("b-a = %d\n", b - a);
	printf("a*b = %d\n", a * b);
	printf("b/a = %d\n", b / a);
	printf("b%%a = %d\n", c);
	return 0;
}

在这里插入图片描述
(2)移位操作符:针对的是二进制的操作
左移:二进制左边丢弃,右边补0
例如:十进制的5 二进制为00000000 00000000 00000000 00000101
左移2位后变成:00000000 00000000 00000000 00010100 十进制为20
右移:跟左移类似,但是要注意右移后其正负号不变,也就是二进制最高位不变
十进制的5 二进制为00000000 00000000 00000000 00000101
右移2位后变成:00000000 00000000 00000000 00000001 十进制为1

#include<stdio.h>
int main()
{
    
    
	int a = 5;
	int b = 0;
	int c = 0;
	b = a << 2;//a本身的值并不会变
	c = a >> 2;
	printf("a<<2 = %d\n", b);
	printf("a>>2 = %d\n", c);
	return 0;
}

在这里插入图片描述

(3)位操作符 二进制操作符
c语言中0表示假,非0表示真
按位与 & 011 & 101 = 001 即3 & 5 = 1
按二进制位,一假则假,二真才真
按位或 | 011 & 101 = 111 即3 & 5 = 7
按二进制位,一真则真,二假才假
按位异或 ^ 011 & 101 = 110 即3 & 5 = 6
按二进制位,相同为假,相异为真

#include<stdio.h>
int main()
{
    
    
	int a = 3;
	int b = 5;
	printf("a&b = %d\n", a & b);
	printf("a|b = %d\n", a | b);
	printf("a^b = %d\n", a ^ b);
	return 0;
}

在这里插入图片描述
(4)赋值操作符
赋值(等于) = 例如:a = 4; 给a赋值为4
[== 判断是否相等 注意区分 = 与 == ]
加等于 += 例如 a += 3 等价于 a = a + 3
减等于 -= 例如 a -= 3 等价于 a = a - 3
乘等于 *= 例如 a *= 3 等价于 a = a * 3
除等于 /= 例如 a /= 3 等价于 a = a / 3
按位与等于 &= 例如 a &= 3 等价于 a = a & 3
按位异或等于 ^= 例如 a ^= 3 等价于 a = a ^ 3
按位或等于 |= 例如 a |= 3 等价于 a = a | 3
按位左移等于 >>= 例如 a >>= 3 等价于 a = a >> 3
按位右移等于 <<= 例如 a <<= 3 等价于 a = a << 3

#include<stdio.h>
int main()
{
    
    
	int a = 5;
	printf("a = 3--->%d\n", a = 3);
	printf("a += 3--->%d\n", a += 3);
	printf("a -= 3--->%d\n", a -= 3);
	printf("a *= 3--->%d\n", a *= 3);
	printf("a /= 3--->%d\n", a /= 3);
	printf("a &= 3--->%d\n", a &= 3);
	printf("a ^= 3--->%d\n", a ^= 3);
	printf("a |= 3--->%d\n", a |= 3);
	printf("a = 9--->%d\n", a = 9);
	printf("a >>= 3--->%d\n", a >>= 3);
	printf("a <<= 3--->%d\n", a <<= 3);
	return 0;
}

在这里插入图片描述
(5)单目操作符
逻辑反操作 ! c语言中0为假 一切非0为真 对0进行逻辑反操作!0 = 1(真 固定值1) 对非0进行逻辑反操作 !2 = 0(假)
负值 - 得到负数 如 - 2 = -2 (负2) - ( - 2) = 2
正值 + 例如 2 实际为 + 2 只是一般 + 号省略了
取地址 & 得到一个变量相应的地址编码
类型长度 sizeof()得到一个变量或者类型的长度,以字节为单位
用sizeof来计算数组元素个数 sizeof(a) / sizeof(a[0])
按位取反 ~对一个数的二进制按位取反
例如 1011 按位取反后为 0100 ,数据在计算机中存储的是二进制的补码,使用的是原码 原码按位取反(符号位不变) 得到反码 反码 + 1得到补码 补码 - 1 得到反码 反码按位取反(符号位不变)得到原码
前置、后置-- --自减
前置、后置++ ++自增
解引用操作符 * 间接访问操作符
强制类型转换 (类型) 例如:(int)强制转换为int类型 (char)强制转换为char类型

#include<stdio.h>
		int main()
{
    
    
	int a = 2;
	double b = 4.11;
	int c = 97;
	printf("!a = %d\n", !a);
	printf("-a = %d\n", -a);
	printf("+a = %d\n", +a);
	printf("&a = %d\n", &a);
	printf("sizeof(a) = %d\n", sizeof(a));
	printf("~a = %d\n", ~a);
	printf("++a = %d\n", ++a);
	printf("a++ = %d\n", a++);
	printf("--a = %d\n", --a);
	printf("a-- = %d\n", a--);
	printf("*(&a)= %d\n", *(&a));
	printf("(int)b = %d\n", (int)b);
	printf("(char)a = %c\n", (char)c);
	return 0;
}

在这里插入图片描述
(6)关系操作符
大于 > 用于判断或测试 大于
大于等于 >= 用于判断或测试 大于等于
小于 < 用于判断或测试 小于
小于等于 <= 用于判断或测试 小于等于
是否不相等 != 用于判断或测试 不相等
是否相等 == 用于判断或测试 相等
(7)逻辑操作符
逻辑与 && (表达式1) && (表达式2) 同真为真一假则假 举例(1 < 2) && (2 > 3) 为假 (1 < 2) && (2 < 3) 为真
逻辑或 || (表达式1) || (表达式2) 同假为假一真则真 举例(1 < 2) || (2 > 3) 为真 (1 > 2) || (2 > 3) 为假
(8)条件操作符
exp1 ? exp2 : exp3 表达式exp1 为真 则整个表达式exp1 ? exp2 : exp3的值为 exp2 否则为 exp3
(9)逗号表达式
exp1, exp2, exp3, ……expN
(10)下标引用、函数调用和结构成员
下标引用[] 比如数组 a[0] 代表第一个元素
函数调用 () Add(a, b)
结构成员 .->Std.name Std->name Std是结构体变量

猜你喜欢

转载自blog.csdn.net/QIYICat/article/details/115427166