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语言第3天 -> 正文阅读

[C++知识库]学习C语言第3天

初识C语言3

补充知识点

//EOF - end of file - 文件结束标志 - -1

创建数组题
编写函数求最大值

#include <stdio.h>
#include <string.h>
int Max(int x, int y) {
	if (x>y) {
		return x;
	}
	else {
		return y;
	}
}
int main() {
	int num1 = 10;
	int num2 = 20;
	int max = 0;
	max = Max(num1, num2);
	printf("%d\n",max);
	return 0;
}

原码,反码,补码

//单目操作符 ~按位(2进制位)取反
int main() {
	int a = 0;//四个字节,32bit位
	//00000000000000000000000000000000
	int b = ~a;//b是有符号的整型,
	//如果是有符号的整型,那么2进制的最高位是符号位
	// 1代表负数,0代表正数
	//11111111111111111111111111111111
	//使用的,打印的是这个数的原码
	printf("%d\n", b);//  -1 
	//源码,反码,补码
	//整数,在内存中存储的时候,存储的是二进制的补码
	//正数,三码统一,原码补码反码相同
	//负数要进行转换
	//计算规则
	//原码,直接按照政府写出的二进制序列
//反码,原码符号位不变其它位按位取反 得到反码
	//补码,反码加1得到补码
	//
	// 补码减1的号反码,
	// 反码符号位不变其它位按位取反的到原码
	// 11111111111111111111111111111111 补码
	// 11111111111111111111111111111110 反码
	// 10000000000000000000000000000001 原码  -1
	return 0;
}

单目操作符 ++ –

//单目操作符--,++
int main() {
	int a = 10;
	int b = a++;//后置++,先使用值后++
	printf("a=%d\nb=%d\n",a,b);
	int c = 10;
	int d = ++c;//前置++,先++后使用
	printf("c=%d\nd=%d\n", c, d);
	//--与++的用法相同
	return 0;
}
*  间接访问操作符(解引用操作符)

(类型)  前置类型转换
int main() {
	//强制类型转换(类型)
	int a =(int)3.14;//double - int
	printf("%d\n", a);//3
	return 0;
}

关系操作符

.>,>=,<,<=,!=,==

逻辑操作符

&&,逻辑与,两个都要是真
||,逻辑或,其中一个为真,是真,都假才为假

//逻辑与&&或||
int main() {
	//c语言中 真 - 非0,假 - 0
	//&& - 逻辑与
	int a = 3;
	int b = 5;
	int c = a && b;
	printf("%d\n", c);//1
	return 0;
}

条件操作符

Exp1?exp2:exp3;
int main() {
	int a = 10;
	int b = 20;
	int max = 0;
	//三目操作符
	max = (a > b ? a : b);
	if (a > b) {
		max = a;
	}
	else {
		max = b;
	}
	
	return 0;
}


逗号表达式,

Exp1,exp2,exp3,exp4…//逗号也可以隔开表达式

下标
下标引用操作符

int main() {
	int arr[10] = { 0 };
	arr[4];//[]下标引用操作符
	return 0;
}

函数调用操作符

int Add(int x, int y) {
	int z = x + y;
	return z;
}
int main() {
	int a = 10;
	int b = 20;
	int sum = Add(a, b);//()函数调用操作符
	return 0;
}


.操作符
->操作符

常见的关键字

规定,变量名不可以和关键字冲突
Auto自动 break退出 switch case char const常量 continue do
Double Else enum枚举 extern引用 float for int long default
register寄存器 Return short signed sizeof static struct结构体
typedef union联合体/共用体 void无 volatile c语言段位 while

int main() {
	//1,auto 自动
	auto int a = 10;//局部变量,自动变量auto省略掉了
//2,register
	register int a = 10;
	//建议把a定义成寄存器变量
	//3,signed定义有符号变量
	//int定义的变量是有符号的
	//signed int; == int
	//4,unsigned无符号变量
	unsigned  int num = 1;
	return 0;
}
int main() {
	//5,typedef - 类型定义 - 类型重定义
	typedef unsigned int u_int;
	unsigned int num = 20;
	u_int num2 = 20;
	//u_int 和 unsigned 现在一样
	//u_int 是 unsigned的别名
	return 0;
}

test.c原文件

//static静态的
//static修饰全局变量
//改变了变量的作用域
//让静态的全局变量只能在原文件的内部进行使用
void test() {
	static int a = 1;//静态的局部变量,不会被销毁
	//static作用,修饰局部变量
	//局部变量的生命周期变长了
	
	a++;
	printf("a=%d\n", a);
}
int main() {
	//extern - 声明外部符号
	extern int g_val;
	printf("g_vale = %d\n", g_val);//不可以访问
	int i = 0;
	while (i < 5) {
		test();
		i++;
	}
	//输出结果 a=2 a=3 a=4 a=5 a=6
	return 0;
}

Add.c原文件

static int g_val = 2020;//全局变量

Add.c

//声明外部函数
extern int Add(int, int);
int main() {
	int a = 10;
	int b = 20;
	int sum = Add(a, b);
	printf("sum = %d\n", sum);
	return 0;
}

被static修饰后,外部文件不可以访问
普通函数是具有外部链接属性的
Static修饰函数,改变了函数的链接属性
外部链接属性则会变成内部链接属性

计算机 存储数据

访问速度依次递减,空间依次递增
寄存器
高速缓存
硬盘
内存

CPU – 中央处理器
从内存拿数据到CPU去计算

#define定义常量和宏

//用#define定义的标示符常量
//#define MAX 100;
//#define可以定义宏- 宏是带参数的
//函数的定义方式
int Max(int x, int y) {
	if (x > y) {
		return x;
	}
	else {
		return y;
	}
}
//宏的定义方式
#define MAX(X,Y) (X>Y?X:Y)
int main() {
	/*int a = MAX;*/
	int a = 10;
	int b = 20;
	//函数
	int max = MAX(a, b);
	printf("max = %d\n", max);
	//宏的方式
	max = MAX(a, b);
	printf("max = %d", max);
	return 0;
}


指针

内存

int main() {
	int a = 10;//四个字节
	//取地址操作符 
	//&a;//取地址a
	//%p打印地址
	printf("%p\n",&a);
	//有一种变量是用来存放地址的, -指针变量
	int* p = &a;
	printf("%p\n", &a);
	*p = 20;//解引用操作符
	printf("a=%d\n", a);
	return 0;
}
int main() {

	char ch = 'w';
	char* pc = &ch;
	*pc = 'a';
	printf("%c", ch);
	return 0;
}

指针的大小:指针在32位平台是4个字节,在64位平台是8个字节。

回顾

电脑 8G – 内存,500G – 硬盘

int main() {
	int a = 10;//向内存申请了四个字节的空间
	//printf("%p\n", &a);
	int* p = &a;//p是一个指针变量
	//printf("%p\n", p);
	*p = 20;//*解引用操作符/简介访问操作符
	printf("%d\n", a);
	double d = 3.14;
	double* pd = &d;
	printf("%d\n", sizeof(pd));//4
	printf("%d\n", sizeof(char*));//4
	printf("%d\n", sizeof(int*));//4
	printf("%d\n", sizeof(float*));//4
	printf("%d\n", sizeof(double*));//4
	return 0;
}

结构体

复杂对象:人 , 书 …
人 – 名字,身高,年龄,身份证号码…
书 – 作者,出版社,定价,书号…
结构体是自己出来的一种类型

//结构体
// 创建一个结构体类型
//创建书的类型
struct Book {

	char name[20];//c语言程序设计
	short price;//55

};

int main() {
	//创建一本书
	//利用结构体 - 创建一个该类型的结构体变量
	struct Book b1 = { "c语言程序设计",55 };
	struct Book* pb = &b1;
	//利用pb打印出我的书名和价格呢
	//.操作符 运用到结构体变量,成员
	//->结构体指针 - >成员
	printf("%s\n", pb->name);
	printf("%d\n", pb->price);
	//printf("%s\n", (*pb).name);
	//printf("%d\n", (*pb).price);
	/*printf("书名:%s\n", b1.name);
	printf("价格:%d\n", b1.price);
	b1.price = 15;
	printf("修改后的价格:%d\n", b1.price);*/
//strcpy(拷贝的位置,拷贝的内容);
	strcpy(b1.name,"C++");//string copy - 字符串拷贝

	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-01-01 13:42:06  更:2022-01-01 13:42:14 
 
开发: 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年11日历 -2024/11/24 10:29:48-

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