当前位置: 首页 > news >正文

C语言基础-初识

目录

一、数据类型

二、常量与变量

1、变量

1.1、变量的声明

一劳永逸的函数库与宏的引入方法

1.1、变量的作用域

1.1.1 局部变量

1.1.2、全局变量

1.2、变量的生命周期

1.2.1、局部变量

1.2.2、全局变量

2、常量

2.1、常量类型

三、数据类型

1、char类型

1.1 、\0字符串结束标识符

1.2、转义字符

四、关键字

1、typedef


目录

一、数据类型

二、常量与变量

1、变量

1.1、变量的声明

一劳永逸的函数库与宏的引入方法

1.1、变量的作用域

1.1.1 局部变量

1.1.2、全局变量

1.2、变量的生命周期

1.2.1、局部变量

1.2.2、全局变量

2、常量

2.1、常量类型

三、数据类型

1、char类型

1.1 、\0字符串结束标识符

1.2、转义字符


一、数据类型

数据类型及大小
类型size(字节)最大值最小值

char

字符型1
short短整型2-2^72^7-1
int整型4-2^152^15-1
long长整型4-2^312^31-1
long long长长整型8-2^632^63-1
float单精度浮点型4
double双精度浮点型8

sizeof(long) >= sizeof(int),这里取值为=,

二、常量与变量

1、变量

1.1、变量的声明

int b = 20; //全局变量声明
int main()
{int a = 10; //局部变量声明return 0;
}

当全局变量名和局部变量名重复时,就近原则使用局部变量。

一劳永逸的函数库与宏的引入方法

VS中创建.c文件,都是对newc++file.cpp的复制,newc++file.cpp的这个文件在安装路径下D:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VC\VCProjectItems

将创建常用.c文件需要的引入的函数库和宏写入保存,之后就每次使用VS创建.c文件,这些定义的宏和函数都会直接写入.c文件中。

1.1、变量的作用域

1.1.1 局部变量

作用域:变量所在的局部范围,即{}内

1.1.2、全局变量

作用域:变量所在的工程范围内,

全局变量具有外部链接属性,可以通过extern 关键字,链接到其他文件中

1.2、变量的生命周期

1.2.1、局部变量

进入作用域生命周期开始,出作用域生命周期结束

1.2.2、全局变量

程序的开始到结束

2、常量

2.1、常量类型

描述不变量,C语言中常见的四种常量:

字面常量、const修饰的常变量、#define定义的标识常量、枚举变量

enum Color
{RED,				//1、枚举常量red红色YELLOW,				//枚举常量yellow红色
};#define MAX 100;		//2、#define定义的标识常量,没有类型
//const修饰的常变量,const修饰的属性,本质是变量,但是不能被修改,所以为常量
const int a = 100;
int main()
{100;				//3、字面常量,定义在函数内const int a = 10;   //4、const修饰的常变量,可以定义在整个.c文件enum Color c = RED; //枚举常量的引用return 0;
}

三、数据类型

1、char类型

1.1 、\0字符串结束标识符

字符型:char c = ‘a’;字符类型结尾是’a‘;

字符串型:char str[] = ”adb“;字符串结尾是'\0',而不是‘b';

在C语言中,字符串的存储,使用的是字符数组char str[] = "abcd";

求字符串长度函数

#include <string.h>
...
int len = strlen(char str);//求字符串的长度

1.2、转义字符

转义字符释义
\?在书写连续多个问号时使用,防止他们被解析成三字母词(将三个字母解析成一个字母),如:??) 会被解析成 ],目前编译器不在支持三字母词
\`用于表示字符常量`
\"用于表示一个字符产内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符
\a警告字符,蜂鸣
\b退格符
\f进纸符
\n换行
\r回车
\t水平制表符
\v垂直制表符
\dddddd表示1~3个八进制的数字。如:\130X
\xdddd表示2个十六进制数字。如:\x30 0

四、关键字

1、typedef

1.1、定义

类型定义,也叫类型重命名,将指定类型重新定义为其他标识,

如:

 //将unsigned int 重定义为 unit ,可以使用uint常见无符号整型
typedef unsigned int uint; 
typedef struct Node          //将结构体struct Node ,重新定义为Node,可使用Node创建结构体
{int val;struct Node* next;
}Node; 
//typedef  类型定义
typedef unsigned int uint;  //将unsigned int 重定义为 unit ,可以使用uint常见无符号整型
typedef struct Node          //将结构体struct Node ,重新定义为Node,可使用Node创建结构体
{int val;struct Node* next;
}Node;               
int main()
{unsigned int a = 100; //无符号整型a = 100;uint b = 20;  //无符号整型b=20;struct Node node1;Node  node2;return 0;
}

2、static

静态,可以用来修饰变量,也可以用来修饰函数

2.1、static修饰局部变量

staitic修饰局部变量为静态局部变量,该函数调用结束后,静态局部变量不销毁,只有在程序执行结束时,销毁静态局部变量。

本质上,static修饰局部变量,将静态局部变量的存储位置从栈区迁移到了静态区上,从而修改了生命周期!

void test()
{static int a = 1;  //静态局部变量,加载阶段创建,程序运行结束销毁int b = 1;        //局部变量,运行函数时创建,函数执行结束销毁a++;printf("%d\n", a);
}

栈区:进栈创建,出栈销毁

静态区:程序开始运行创建,程序运行结束销毁

2.2、静态全局变量

使用static修饰的变量,其作用域是自身源文件(.c),全局变量失去外部链接属性,变成内部链接属性,其他源文件(.c)就不可以使用这个变量。

2.3、static修饰函数

3、extern 声明外部符号

4、register——寄存器

电脑的存储设备:硬件,内存,高速缓存(cache),寄存器(集成在cpu上)

五、define定义常量和宏

1.1、定义标识符常量

#define NUM 100;  //定义标识符常量

1.2、定义宏

1.2.1、什么是宏

用一个字符串表示有意义的常量或常量表达式(被称为宏);

#define ADD(x,y) ((x) + (y)) //定义宏
int main()
{int a = 10;int b = 10;int c = ADD(a, b);printf("%d", c);return 0;
}

#define ADD(x,y) ((x) + (y)) //定义宏

#define         使用define定义宏

ADD              定义宏名

(x,y)               宏的参数

 ((x) + (y))      宏体,宏的具体内容

相关文章:

  • 训练自己的yolo模型,并部署到rk3588上
  • HTTPS 协议:数据传输安全的坚实堡垒
  • Prompt工程:解锁大语言模型的终极密钥
  • vscode的Embedded IDE创建keil项目找不到源函数或者无法跳转
  • 服务器中分布式存储数据技术都包含哪些内容?
  • 攻防世界逆向刷题笔记(新手模式9-1?)
  • Android15 Camera Hal设置logLevel控制日志输出
  • Android 15 控制亮屏灭屏接口实现
  • Cherry Studio连接配置MCP服务器
  • Android 启动优化
  • Python os 模块简介及基础使用示例
  • 在PyTorch中,对于一个张量,如何快速为多个元素赋值相同的值
  • 【笔记】解决ImportError: cannot import name ‘Iterable‘ from ‘collections‘
  • 【会议推荐】2025年模式识别与大数据国际会议(PRBD 2025)
  • 华为认证中HCIA/HCIP/HCIE是什么等级?怎么考试?
  • #跟着Lucky学鸿蒙# HarmonyOS NEXT 工程介绍
  • ES 在大查询场景下导致 GC 频繁,如何定位和解决?
  • 用 Python 打造你的专属虚拟试衣间!——AI+AR 如何改变时尚体验
  • 模型评价指标介绍
  • emqx、MongoDB或者java程序,出现 Too many open files 问题
  • 如何做求婚网站/电脑系统优化软件排行榜
  • 网站营销建设方案/中山疫情最新消息
  • 网站开发网站设计素材/大数据营销名词解释
  • 怎么样才能创建自己的网站/搜索引擎营销sem
  • 烟台网站排名优化/百度ai人工智能平台
  • bbc实验是哪个网站做的/濮阳网站推广