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语言初级(2022/8/2) -> 正文阅读

[C++知识库]C语言初级(2022/8/2)

一、常见关键字:C语言提供的关键字

(1)C语言提供的,不能自己创建关键字

(2)变量名不能是关键字

1.auto 是自动的——每个局部变量都是auto形式的

int main()
{
{
?? ??? ?int a = 10; ? //自动创建,自动销毁——自动变量(省略了auto在前面)
}

?? ?return 0;
}

2.break? 循环

3.case

4.char? 字符类型

5.const? 常变量

6.continue

7.default? 默认

8.do

9.double? 双精度

10.else? 选择

11.enum? ?枚举

12.extern??extern用来声明外部符号

#include "add.h"

//全局变量
int g_val = 2022;

(两个文件)

//extern 声明外部符号(名字、类型)
extern int g_val; ?
int main()
{
?? ?printf("%d\n", g_val);

return 0;
?? ?}

int Add(int x, int y)
{
?? ?return x + y;

(两个文件)

//声明函数
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;
?? ?}

13.float? 单精度

14.goto

15. int? 整型

16.register? 寄存器关键字

int main()
{
?? ?register int num = 100; ? //建议num的值存放在寄存器中
?? ?return 0;
}

计算机中数据可以存储到哪里呢?

寄存器、高速缓存、内存、硬盘、网盘

? 更小? ? ? 几十MB? ? ? 8G? ??500G? ?2T

*从右到左,造价越高,速度越快,空间越小

17.return

18.short? 短整型

19.signed? 有符号的

unsigned?无符号的

20.sizeof

21.static?静态的!(希望变量出了范围不销毁时用static修饰)

//static——静态的
//1.static修饰局部变量
//2.static修饰全局变量
//3.static修饰函数

(1)修饰局部变量

//void test()
//{
//?? ?int a = 1; ? ? //a是局部变量
//?? ?a++;
//?? ?printf("%d", a);
//}
//int main()
//{
//?? ?int i = 0;
//?? ?while (i < 10)
//?? ?{
//?? ??? ?test();
//?? ??? ?i++;
//?? ?}
//?? ?return 0;
//}
结果10个2


void test()
{
?? ?static int a = 1; ? ??
?? ?//static修饰局部变量,改变了局部变量的生命周期(本质上改变了变量存储类型),让出了范围时a不销毁
?? ?a++;
?? ?printf("%d", a);
}
int main()
{
?? ?int i = 0;
?? ?while (i < 10)
?? ?{
?? ??? ?test();
?? ??? ?i++;
?? ?}
?? ?return 0;
}


//内存存储类型分为:栈区、堆区、静态区
//栈区:局部变量、函数的参数(局部、临时)
//堆区:动态类型的分配
//静态区:全局变量、static修饰的静态变量

(2)修饰全局变量

static int g_val = 2022;
//static修饰全局变量,使得全局变量只能在自己所在的源文件(.c)内部使用
//其他源文件不能使用!

全局变量,在其它源文件内部可以被使用,是因为全局变量具有外部链接属性,但被static修饰后,就变成了内部链接属性,其他源文件不能链接到这个静态的全局变量了!

(3)修饰函数

static int Add(int x, int y)
{
?? ?return x + y;
}

//staticstatic修饰函数,使得函数只能在自己所在的源文件内部使用,不能在其他源文件内部使用
//本质上是将函数的外部链接属性变为了内部链接属性(与static修饰全局变量一样)

22.struct? 结构句

23.swiitch

24.typedef? 类型重定义

typedef unsigned int u_int; ?//类型重新命名
//张三——小三
int main()
{
?? ?u_int num = 100;
?? ?printf("%d\n", num);
?? ?return 0;
}

25.union? 联合体(共用体)

26.void? 无-空

27.volatile? ?C语言暂不讲

(define、include不是关键字,二者为预处理指令)

二、常量和宏

#define定义常量和宏

//define是一个预处理指令
//1.define定义常量
#define MAX 1000
//int main()
//{
//?? ?printf("%d\n", MAX);
//?? ?return 0;
//}


//2.define定义宏
#define ADD(X,Y) X+Y
#define ADD2(X,Y) ((X)+(Y))
int main()
{
?? ?printf("%d\n", 4*ADD(2, 3)); ? //11
?? ?//define定义宏为替换,4*2+3=11
?? ??? ?
?? ?
?? ?printf("%d\n", 4 * ADD2(2, 3)); ? //11
?? ?//define定义宏为替换,4*(2+3)=20
?? ?
?? ?
?? ?return 0;
}

三、初识指针

内存

存储方式:划分为一个一个小的格子,每个格子编号

1.内存是怎么编号的?

32位——32根地址线——物理线——通电——1/0

电信号转换成数字信息:1和0组成的二进制系列

00000000000000000000000000000000? ? ? ??

......

0111111111111111111111111111111111111

......

10000000000000000000000000000000

.....

1111111111111111111111111111111111111

共2的32次方个二进制序列,都可作为内存编号,该编号为内存的地址

2的32次方个内存单元

最终:1个内存单元是一个字节byte = 8 bit,然后分配地址

2.一个这样的内存单元是多大空间?

//指针就是地址
?? ?int a = 10; ?//a在内存中要分配空间的——4个字节(int)
?? ?//调试——内存——&a——显示第一个字节的地址0x007FFB98(用监视验证)
?? ?printf("%p\n", &a); ? ?//%p用来打印地址
?? ?int * pa = &a; ?//pa是用来存放地址的,在C语言中叫pa叫指针变量
?? ?//*说明pa是指针变量,int说明pa指向的对象是int类型的

?? ?char ch = 'w';
?? ?char * pc = &ch;

?? ?* pa = 20; ?//*解引用操作,*pa就是通过pa里的地址,找到a(可以间接改变a)
?? ?printf("%d\n", a);

?? ?return 0;

指针的大小

printf("%d\n", sizeof(char*));
?? ?printf("%d\n", sizeof(short*));
?? ?printf("%d\n", sizeof(int*));
?? ?printf("%d\n", sizeof(long*));
?? ?printf("%d\n", sizeof(long long*));
?? ?printf("%d\n", sizeof(float*));
?? ?printf("%d\n", sizeof(double*));
?? ?//指针大小相同,全部4个字节
//为什么?
?? ?//因为指针用来存放地址,指针需要多大空间,取决于地址的存储需要多大空间
?? ?/*32位 32bit——4byte字节
?? ?64位 64bit——8byte字节*/
?? ?//32位平台的地址大小都为4字节,64位平台都为8字节

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

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