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

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))      宏体,宏的具体内容

http://www.xdnf.cn/news/9176.html

相关文章:

  • R包安装报错解决案例系列|R包使用及ARM架构解决data.table安装错误问题
  • WPF【11_5】WPF实战-重构与美化(MVVM 实战)
  • 计算机网络学习20250527
  • pycharm终端遇不显示虚拟环境的问题
  • Windows版本的postgres安装插件http
  • java的vscode扩展插件
  • 【】20250527PDF文件拆分成多个pdf(两页一份,用幼儿班级姓名命名文件)
  • CentOS 7 下 Redis 从 5.0 升级至 7.4.3 全流程实践
  • 基线配置管理:为什么它对网络稳定性至关重要
  • RabbitMQ搭建集群
  • Odoo 财务模块全面深度解读(VIP15万字版)
  • xcode手动安装iOS Simulator Runtime
  • 2.4GHz 射频前端芯片AT2401C
  • 【Elasticsearch】PUT` 请求覆盖式更新
  • GitHub push失败解决办法-fatal: unable to access ‘https://github.com/xxx
  • 【node】Express创建服务器
  • leetcode hot100刷题日记——19.买卖股票的最佳时机
  • `sysctl`命令深度剖析:如何优化内核参数以提升服务器网络/IO性能?
  • 百度ocr的简单封装
  • html5视频播放器和微信小程序如何实现视频的自动播放功能
  • 优雅草最新实战项目技术Discuz X3.5电子签约插件开发项目实施方案优雅草·卓伊凡
  • MicroPython 开发ESP32应用教程 之 线程介绍及实例分析
  • Android 启动优化
  • 使用堡塔和XShell
  • C++ STL stack容器使用详解
  • IoT/HCIP实验-1/物联网开发平台实验Part1(快速入门,MQTT.fx对接IoTDA)
  • 大型三甲医院更换HIS系统全流程分析与经验考察(上)
  • 【教程】给Apache服务器装上轻量级的防DDoS模块
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(二十七) -> 开发云函数
  • 基于 SpringBoot 与 VueJS 的智慧就业服务平台构建:技术融合与实践创新