C语言学习#002_初识字符串,常用转义字符,分支,循环,函数,数组,算术运算符,赋值运算符,赋值操作符,单目操作符,关系操作符,逻辑操作符,条件操作符,逗号表达式,下标引用,函数调用,结构成员

1. 初识字符串

1-1. 字符串的声明

单引号包起来的是一个字符(字符)
双引号包起来的是一串字符(字符串)

#define _CRT_SECURE_NO_WARNINGS 1	

#include <stdio.h>

// 字符串
int main()
{
    
    
	// 单引号包起来的是一个字符(字符)
	char ch = 'a';
	// 双引号包起来的是一串字符(字符串)
	char arr[] = "ABC";
	return 0;
}

1-2. 字符串的结束标志

字符串在结尾的位置隐藏了一个’\0’的字符
'\0’是字符串的结束标志

在这里插入图片描述

1-3. 打印字符串

#define _CRT_SECURE_NO_WARNINGS 1	

#include <stdio.h>

// 字符串打印
int main()
{
    
    
	// 没有 '\0' 结尾
	char str1[] = {
    
     'A', 'B','C','D' };
	// 有 '\0' 结尾
	char str2[] = "ABCD";

	// %s 打印字符串
	printf("%s\n", str1); // 打印到找到 '\0' 为止
	printf("%s\n", str2); // ABCD

	return 0;
}

如果没有以’\0’结尾打印字符串

在这里插入图片描述

1-4. 获取字符串的长度

  1. 引入 string.h 头文件
  2. 使用 strlen() 函数获取字符串长度
  3. 声明一个字符串
  4. 获取长度
  5. 打印长度
#define _CRT_SECURE_NO_WARNINGS 1	

#include <stdio.h>
#include <string.h> // 引入 string.h 这个头文件,才能使用 strlen() 函数计算字符串长度

// 获取字符串长度
int main()
{
    
    
	// 使用 strlen() 函数获取字符串长度,需要引入头文件 string.h
	// 计算长度时, '\0'不会被计算

	// 声明一个字符串
	char str[] = "Hello";
	// 获取长度
	int len = strlen(str);
	// 打印长度
	printf("%d\n", len); // 5

	return 0;
}

注意:

  1. 有 ‘\0’ 结尾的字符串可以正确打印长度
  2. 没有 ‘\0’ 结尾的字符串打印长度将会是随机值

在这里插入图片描述

#define _CRT_SECURE_NO_WARNINGS 1	

#include <stdio.h>
#include <string.h>

// 字符串长度需要注意的地方
// 有 '\0' 结尾的字符串可以正确打印长度
// 没有 '\0' 结尾的字符串打印长度会是随机值
int main()
{
    
    
	// 没有 '\0' 结尾
	char str1[] = {
    
     'A','B','C','D' };
	// 有 '\0' 结尾
	char str2[] = "ABCD";

	printf("%d\n", strlen(str1)); // 随机值
	printf("%d\n", strlen(str2)); // 4

	return 0;
}

2. 常用转义字符

转义字符 作用
\’ 用于表示字符 ’ (单引号)
\" 用于表示字符 " (双引号)
\\ 用于表示字符 \ (反斜杠)
\b 退格符,相当于 Backspace 键
\n 换行符
\t 水平制表符,相当于 Tab 键
#define _CRT_SECURE_NO_WARNINGS 1	

#include <stdio.h>

int main()
{
    
    
	// %c 打印字符
	// \' 单引号
	printf("%c", '\'');

	printf("\n"); // 换行

	// %s 打印字符串
	// \" 双引号
	printf("%s", "\"");

	printf("\n"); // 换行

	// %c 打印字符
	// \\ 反斜杠
	printf("%c", '\\');

	printf("\n"); // 换行

	// \b 退格符,相当于 Backspace 键
	printf("abc\bdef"); // abdef

	printf("\n"); // 换行

	// \n 换行符
	printf("aaa\naaa\n");

	// \t 水平制表符,相当于 Tab 键
	printf("aaa\taaa"); // aaa	aaa

	return 0;
}

打印结果

在这里插入图片描述

3. ASCII表

需要用到 ASCII表 就看:http://ascii.wjccx.com/

4. 初识选择语句

#define _CRT_SECURE_NO_WARNINGS 1	

#include <stdio.h>

int main()
{
    
    
	// if 如果
	// 为 true(真) 的时候就执行上面的花括号内的内容
	// 为 false(假) 的时候就执行下面的花括号内的内容
	if (true)
	{
    
    
		printf("True\n");
	}
	// else 否则
	else
	{
    
    
		printf("False\n");
	}

	return 0;
}

5. 循环语句

循环 使用
while 循环 满足条件就继续执行
do while 循环 先执行后判断条件,不管满不满足条件,总会执行一次
for 循环 和while差不多,都是满足条件执行,写法不一样
#define _CRT_SECURE_NO_WARNINGS 1	

#include <stdio.h>

int main()
{
    
    
	// 循环语句
	
	// while 循环,满足条件就继续执行
	int a = 0;
	// 如果 a < 10 就继续执行花括号内的内容
	while (a < 10)
	{
    
    
		printf("%d\t", a); // 打印 a
		a++; // 每次循环 a 都自增 1
	}

	printf("\n\n");

	// do while 循环,先执行后判断条件,不管满不满足条件,总会执行一次
	int b = 10;
	do
	{
    
    
		printf("%d\t", b);
		b++;
	} while (b < 10);

	printf("\n\n");

	// for 循环,和while差不多,都是满足条件执行,写法不一样
	for (int c = 0; c < 10; c++)
	{
    
    
		printf("%d\t", c);
	}

	return 0;
}

6. 初识函数

用函数来是实现两个数字相加

#define _CRT_SECURE_NO_WARNINGS 1	

#include <stdio.h>

// 用函数来是实现两个数字相加

// Add函数的声明,要在 main 函数之前
// 他的作用就是负责把传递过来的两个数字相加并返回
int Add(int x, int y)
{
    
    
	return x + y;
}

int main()
{
    
    
	int num1 = 3;
	int num2 = 4;

	// 将 num1 和 num2 传递过去, 并用 sum 获取返回的结果
	// 这里相当于委托了 Add 函数帮我们把 num1 和 num2 相加了,然后他把结果返回给我们
	int sum = Add(num1, num2);

	// 打印 sum
	printf("%d\n", sum);

	return 0;
}

7. 数组

数组 就是 一组相同类型的元素的集合

7-1. 数组的声明

将 10 个整形的数字存起来

int arr[10] = {
    
    1,2,3,4,5,6,7,8,9,10};

7-2. 数组的使用

从下标 0 开始
在这里插入图片描述

printf("%d\n", arr[0]); // 打印数组里的第一个元素

7-3. 用循环将数组里的元素全打印出来

#define _CRT_SECURE_NO_WARNINGS 1	

#include <stdio.h>

int main()
{
    
    
	// 创建一个整形数组
	int arr[10] = {
    
     1,2,3,4,5,6,7,8,9,10 };

	// for循环打印数组里的元素
	for (int i = 0; i < 10; i++)
	{
    
    
		printf("%d\t", arr[i]);
	}
	
	return 0;
}

8. 操作符

8-1. 算术运算符

操作符 作用
+ 加号,可以将两个数字相加
- 减号,可以将两个数字相减
* 乘号,可以将两个数字相乘
/ 除号,可以将两个数字相除
% 取余,可以获取两个数字相除的余数

8-2. 移位运算符

操作符 作用
>> 右移,将当前数字转换成二进制向右移动一位
<< 左移,将当前数字转换成二进制向左移动一位
& 按位与,如果两个数的相应位均为1时,结果位才为1,否则为0
| 按位或,如果两个数的相应位有1,结果位就为1,没有1,结果位为0。
^ 按位异或,如果两个数的相应为相同则为1,否则为0

8-3. 赋值操作符

操作符 作用
= 将等号右边的值赋给等号左边的变量
+= a += 1 相当于 a = a + 1
-= a -= 1 相当于 a = a - 1
*= a *= 1 相当于 a = a * 1
/= a /= 1 相当于 a = a / 1
%= a %= 1 相当于 a = a % 1
&= a &= 1 相当于 a = a & 1
^= a ^= 1 相当于 a = a ^ 1
| a |= 1 相当于 a = a | 1
>>= a >> =1 相当于 a = a >> 1
<<= a <<= 1 相当于 a = a << 1

8-4. 单目操作符

双目操作符? a + b,有两个操作数就是双目操作符
单目操作符,就是只有一个操作数

操作符 作用
! 逻辑反操作,例如:a = true,那么 !a = false
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反,0 变 1 , 1 变 0
-- 两个减号,前置或后置- -,自减1
++ 两个加号,前置或后置++,自增1
* 间接访问操作符(解引用操作符)
(数据类型) 强制类型转换

8-5. 关系操作符

操作符 作用
> 大于号
>= 大于号和等于号
< 小于号
<= 小于号和等于号
!= 测试“不相等
== 测试“相等

8-6. 逻辑操作符

操作符 作用
&& 逻辑与,两边条件同时为 true 才满足条件
|| 逻辑或,两边条件有一边为 true 就满足条件

8-7. 条件操作符(三目操作符)

操作符 作用
2 == 1 ? 2 : 1 判断a是不是等于1,如果相等返回 2,不相等返回冒号后面的 1

8-8. 逗号表达式

使用逗号表达式会依次从左向右计算表达式,并返回最后的值

#define _CRT_SECURE_NO_WARNINGS 1	

#include <stdio.h>

int main()
{
    
    
	// 逗号表达式
	int a = 2;
	int b = 3;
	int c = 4;
	// 使用逗号隔开会依次从左向右计算表达式,并返回该值
	//       a = 3 + 2 = 5, c = 5 - 1 = 4, b = 3 + 4 = 7  
	int d = (a = b + 2, c = a - 1, b = 3 + c); // 这里的结果为 7

	printf("%d\n", d);

	return 0;
}

9. 下标引用,函数调用,结构成员

操作符 作用
[] 下表引用操作符,访问数组的元素的时候使用
() 函数调用操作符,调用函数时,函数名() 就是调用函数
. 用来访问结构体里的成员
-> 用于指向结构体子数据的指针,用来取子数据。
#define _CRT_SECURE_NO_WARNINGS 1	

#include <stdio.h>

// Say函数
void Say()
{
    
    
	printf("Hello\n");
}

// 结构体定义
struct ABC
{
    
    
	int a;
	float b;
};

int main()
{
    
    
	// [] 下表引用操作符,访问数组的元素的时候使用
	int arr[5] = {
    
     1,2,3,4,5 };
	printf("%d\n", arr[0]); // 这里 arr[0], 就用到了 [] 来访问数组元素

	// () 函数调用操作符,调用函数时,函数名() 就是调用函数
	Say(); // 这里的 Say 是函数名, 后面的括号代表调用这个函数,所以函数体里的内容会在这里执行

	// . 操作符,将结构体初始化,然后用 . 来调用结构体里的成员
	struct ABC abc = {
    
     2, 3.14 };
	printf("%d\n", abc.a);

	// -> 操作符
	// 定义结构体指针, 让指针指向上面的 abc 结构体
	struct ABC* bcd = &abc;
	// 通过 -> 来访问 a
	printf("%d\n", bcd -> a);

	return 0;
}

猜你喜欢

转载自blog.csdn.net/My_csdnQMDX/article/details/126804105
今日推荐