IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言核心知识点总结 -> 正文阅读

[C++知识库]C语言核心知识点总结

一、数据类型

char //字符数据类型 'A'
short //短整型
int   //整型
long  //长整型
long long //更长的整型
float      //单精度浮点数
double     //双精度浮点数

double d = 3.14;
printf("%lf\n", d);

unsigned char i ;//0~255
char i//-128~0~127

1.为什么出现这么多类型?

printf("%d\n",sizeof(char));	//1
printf("%d\n",sizeof(short));	//2
printf("%d\n",sizeof(int));		//4
printf("%d\n",sizeof(long));	//4/8
printf("%d\n",sizeof(long long));//8
printf("%d\n",sizeof(float));	//4
printf("%d\n",sizeof(double));	//8
注:同一类型的有符号数和无符号数所占字节数相同
short int age = 20;  //2^16=65535

即,为了更加丰富的表达生活中的各种值

数据的存放方式

在这里插入图片描述

常量与变量

1.作用域

当局部变量和全局变量相同时,局部变量优先。

//取地址符号&
scanf("%d%d",&num1,&num2);
//避免编译器提示语法不安全
#define _CRT_SECURE_NO_WARNINGS 1

声明extren外部符号的

extern int g_val;
printf("g_val = %d\n", g_val);

2.变量的生命周期

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

3.常量

  • 字面常量
  • const修饰的常变量
  • #define定义的标识符常量
  • 枚举常量
const int num = 4;
num = 8 //不能进行更改

int  n = 10;
int arr[n] = {0};//应该放入常量表达式
enum Sex
{
	MALE,
	FEMALE,
	SECRET
};
int main()
{
	printf("%d\n",MALE);	//0
	printf("%d\n",FEMALE);	//1
	printf("%d\n",SECRET);	//2
	enum Sex sex = MALE;
	sex = FEMALE;	//可更改
	FEMALE = 6;		//不能更改
}

数组 字符串

int main()
{
	char arr1[] = "abc";
	//'a','b','c','\0'
	//'\0':字符串的结束标志 
	char arr2[] = {'a','b','c'};
	char arr3[] = {'a','b','c','\0'};
	printf("%s\n",arr1); //abc
	printf("%s\n",arr2); //abc烫烫烫bc
	printf("%s\n",arr3); //abc
	printf("%d\n",strlen(arr1));//3
	printf("%d\n",strlen(arr2));//随机值
	
	printf("%d\n",strlen("c:\test\32\test.c"));//13
	//32是两个8进制数字,转化为10进制后ASCII码值所对应的字符
	char arr4[5] = {'a',98};
	printf("%d\n",sizeof(arr4));//2,所占字节大小
	printf("%d\n",sizeof(arr1));//4
}

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

1.二维数组

int arr[][4] = {{1,2,3,4},{5,6,7,8}};
//列下标不能省略

参数是数组的形式
在这里插入图片描述
参数是指针的形式

*((*p+i)+j) =  (*(p+i)[ j ])

在这里插入图片描述

指针

存放内存单元的地址,内存单元以字节为单位
*–>解引用操作符
指针大小在32位平台是4个字节

double d = 3.14;
double* pd = &d;
//sizeof(pd) = sizeof(double*)

指针类型决定了指针解引用操作的时候,能够访问空间的大小
int *p;//能够访问4个字节
char *p;//能够访问1个字节
指针类型决定了指针的步长
int *p; //p+1->4
cahr *p; //p+1->1
double *p; //p+1->8

在这里插入图片描述

1.指针数组

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

2.数组指针

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

3.总结

在这里插入图片描述

指针进阶

1.函数指针

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

2.函数指针的数组

可代替switch语句
在这里插入图片描述

3.指向函数指针数组的指针

在这里插入图片描述

排序函数

在这里插入图片描述

在这里插入图片描述

字符串函数

在这里插入图片描述

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

关键字(static define)

static修饰局部变量:使得局部变量的生命周期变长
static修饰全局变量:使得全局变量的作用域变窄,另一函数进行extern声明时发生错误
static修饰函数:改变了函数的链接属性,使得外部链接属性转化为内部链接属性

宏定义

#define MAX(X,Y) (X>Y?X:Y)
int main()
{
	max = MAX(a,b);//max = (a>b?a,b)
}

结构体

//结构体变量.成员
//结构体指针->成员
struct Book
{
	char name[20];
};
int main()
{
	struct Book b1 = {"CCC"};
	struct Book* pb = &b1;
	printf("%s\n",b1.name);
	printf("%s\n",(*pb).name);
	printf("%s\n",pb->name);
//更改成员数据
	b1.name = "uuuu"//err
	strcpy(b1.name,"uuuu");//string.h
}

在这里插入图片描述

在这里插入图片描述

循环

	int i = 1;
	while(i<10)
	{
		if(i == 5)
			continue;
		printf("%d",i);
		i++;
	}
	//陷入死循环,当i=5时,跳到while,然后到continue,还会回到while
	//ctrl+z 可结束
	while(ch = getchar()! = EOF)
	{
		putchar(ch);
	}
	char password[20] = {0};
	scanf("%s",password);
	ret = getchar();
	//当输入完后,按下回车键,‘\n’就会被ret接收
	while(ch=getchar()!='\n')
	{
		;
	}
	//将缓冲区读取完

for语句的循环控制变量:
1.不可在for循环体内修改循环变量,防止for循环失去控制
2.建议for语句的循环控制变量的取值采用“前闭后开区间”的写法

	int i=0,k=0;
	for(i=0,k=0;k=0;i++)
		k++;
	//不进入循环,k=0为假
#include<windows.h>
Sleep(1000);
#include<stdlib.h>
system("cls");//清空屏幕
//时间戳
srand((unsigned int) time()); 
ret = rand()

函数

1.函数的调用

形参实例化之后其实相当于实参的一份临时拷贝。

而传址调用可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量

printf函数返回的是字符的个数
在这里插入图片描述

2.递归

1.存在限制条件,当满足这个限制条件的时候,递归便不再继续

//计算字符串长度
//char arr[] = "bit";
//int len = my_strlen(arr);
int my_strlen(char *str)
{
	if(*str!='\0')
		return 1+my_strlen(str+1);
	else
		return 0;
}

3.数组作为函数参数

//arr是数组,对数组arr进行传参,实际上传递过去的是数组arr的首元素的地址 &arr[0]
buble_sort(arr,sr);

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

4.指针作为参数

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

操作符

1.算术操作符

除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。

2.移位操作符

1.算术右移:右边丢弃,左边补原符号位
2.逻辑右移:左边补零

3.逻辑操作符

^异或运算,相同为0,不同为1
!逻辑反操作
EOF:文件结束标志

取反
	int a = 0//4个字节,32bit位
	int b = ~a;//b是有符号数的整形
	//存储的是补码,打印出的是原码,b=-1
	

动态内存

#include <stdlib.h>
#include <string.h>
#include <errno.h>
int main()
{
	//像内存申请10个整形的空间
	int* p = (int *)malloc(10*sizeof(int));
	if(p==NULL)
	{
		//打印错误原因的一个方式
		printf("%s",strerror(errno));
	}
	free(p)
	p=NULL;
	return 0;
}

在这里插入图片描述

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

柔性数组

在这里插入图片描述

在这里插入图片描述

文件操作

在这里插入图片描述
# 文件操作

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

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 20:56:54  更:2022-10-22 20:56:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 5:22:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码