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(条件判断)
{
循环体
}
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是结构体变量
转载:https://blog.csdn.net/QIYICat/article/details/115427166