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语言深度解析(一)

1、C语言的C89\C90有32个关键字
2、C语言程序
(1)代码文本—>可执行程序(二进制码)—>双击启动程序
生成可执行程序并运行
编译链接并运行程序
在windows系统中,双击应用的本质是运行程序,将程序加载到内存中
任何程序程序运行前都必须加载到内存中。
.obj 程序编译产生的临时文件(Linux)
.exe 可执行文件
(2)程序没有运行时存储在哪?
程序没有加载时存储在硬盘中
(3)为什么所有程序使用前都必须加载到内存中?
因为外设速度慢,这样速度更快(与冯诺依曼体系结构有关)。
3、代码块

//用{}括起来的区域,就叫做代码块
#include <stdio.h> 
#include <windows.h> 
int g_x = 100; 
//全局变量 
int main() 
{ 
	int x = 10; 
	//局部变量,main函数也是函数,也有代码块{} 
	printf("x:%d\n", x); 
	system("pause"); 
	return 0; 
}

4、局部变量和全局变量
(1)定义变量的本质:在内存中开辟一块空间,用来保存数据。(为何一定是内存:因为定义变量,也是程序逻辑的一部 分,程序已经被加载到内存)
(2)局部变量:包含在代码块中的变量叫做局部变量。局部变量具有临时性。进入代码块,自动形成局部变量,退出代码块自动 释放。
(3)全局变量:在所有函数外定义的变量,叫做全局变量。全局变量具有全局性。
(4)当局部变量和全局变量存在冲突时,优先局部变量

#include <stdio.h> 
#include <windows.h> 
int g_x = 100; //全局变量
int x =  0;
nt main() 
{ 
	int x = 10; //局部变量,main函数也是函数,也有代码块{} 
	printf("x:%d\n", x); //打印结果为10
	system("pause"); 
	return 0; 
}

5、作用域和生命周期
作用域:改变量的有效范围
生命周期:时间的概念,什么时候开辟,什么时候释放。

#include <stdio.h> 
#include <windows.h> 
int main() 
{ 
	int x = 10; 
	if (x == 10)
	{ 
	int y = 20;
	printf("局部: x: %d, y: %d\n", x, y);//y只能在本代码块内有效 
	}
	printf("局部: x: %d, y: %d\n", x, y); //报错,y不能被访问 
	system("pause"); 
	return 0; }

6、寄存器变量不能被取地址。
7、定义:开辟空间,只能有一次
声明:告知,可以多次
8、关键字auto
一般在代码块中定义的变量,即局部变量,默认都是auto修饰的,不过一般省略

#include <stdio.h> 
#include <windows.h> 
int main() 
{ 
	for ( auto int i = 0; i < 10; i++)
	{ 
	printf("i=%d\n", i); 
	if(1) 
	{ 
	auto int j = 0; //自动变量 
	printf("before: j=%d\n", j); 
	j += 1; 
	printf("after : j=%d\n", j);
	 } 
	system("pause"); 
	 return 0;
	}
}

9、关键字register
register 修饰变量,将所修饰变量,放入CPU寄存区中,从而达到提高效率的目的,
使用范围:
(1)局部的(全局会导致CPU寄存器被长时间占用)
(2). 不会被写入的(写入就需要写回内存,后续还要读取检测的话,register的意义在哪呢?)
(3)高频被读取的(提高效率所在)
(4)如果要使用,请不要大量使用,因为寄存器数量有限

注意:被register修饰的变量不能被取地址。

#include <stdio.h> 
#include <windows.h> 
int main() 
{ 
	register int a = 0; 
	printf("&a = %p\n", &a); //编译器报错:错误 1 error C2103: 寄存器变量上的“&” 
	//注意,这里不是所有的编译器都报错,目前我们的vs2013是报错的。 
	system("pause"); 
	return 0; 
}

每个硬件都充当上一级硬件的缓存。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-11 16:27:42  更:2021-07-11 16:29:08 
 
开发: 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/4 16:32:12-

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