C语言随笔集

2024-04-26 20:20
文章标签 语言 随笔集

本文主要是介绍C语言随笔集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

注意 strlen 和 sizeof 的区别

  • strlen计算的是第一个 ‘\0’ 前面的字符的个数
  • sizeof计算的是占用的内存空间的大小只和定义时有关
  • C语言中,输出double类型(双精度)和float(单精度)时, 编译器默认精确到小数点后六位输出
    默认输出的是6位小数,不足6位,以0补齐,超过6位按四舍五入截断。
  • 字符串数组在内存中存储,不管大端还是小端, 都是首个字符先存储,ASII值转换成二进制存储相应的比特位即可

C语言的本质是操作内存

内存分配的方式:

  • 1.定义变量时,由操作系统根据变量的类型在栈区分配
  • 存储类型 数据类型 变量名;
  • 2.程序员使用malloc手动在堆区分配

C语言变量的数据类型:

基本类型:

字符类型       char       %c      1B
短整型          short      %d      2B
整型               int        %d      4B
长整型           long      %ld     32位:4B 64位:8B
长长整型       long long   %lld   8B
单精度浮点型      float      %f       4B
双精度浮点型      double    %lf       8B
多精度浮点型      long double   %llf     32位:12B 64位:16B      
枚举类型          enum

构造类型:

数组
结构体            struct
共用体(联合体)   union

指针类型:

作用:
决定从他保存地址开始,能操作几个字节--------------->操作空间的大小

空类型:

void
void*

存储类型:

  • const 用来修饰变量时,表示只读变量 const int a =10;
  • a的值不能修改
  • const 修饰指针时:
const* 的位置关系
  • 1.const在的左边,表示修饰的是p
const int *p;
int const *p;
不能通过指针p修改指向空间的内容
但是指针的指向是可以修改的
  • 2.const在*的右边,表示修饰的是p
int * const p;
指针的指向不能修改
但是允许通过指针修改指向空间的内容
  • 3.*的左右两边都有const 说明都不能修改
const int * const p;
  • static关键字有两个作用:
1.延长局部变量的生命周期------------->从最近的{}结束至整个程序结束
2.限制作用域:static修饰的变量或者函数只能在当前文件中访问;
  • extern
声明一个函数或者变量在其他的.c文件中定义;
如果一个.c文件中需要使用另外一个.c文件中的变量或者函数;
需要在第一个.c文件中使用extern声明;
  • register
register修饰的是一个寄存器类型的变量,被执行的效率高;
CPU取数据的优先级(寄存器 > 高速缓存(cache)> 内存)
但是CPU的寄存器的个数是有限的
所以,把所有的变量都定义成寄存器变量是不现实的--------->实际开发时,一般不用
注意:register修饰的变量是不能取地址的;
  • volatile
防止编译器优化
要求CPU每次取数据都必须在内存上取
使用场景:
1.中断状态的寄存器
2.多线程访问同一个变量
  • auto
声明一个变量时自动类型
定义局部变量时不写存储类型,默认的都是自动类型非自动类型的变量:
全局变量
static修饰的局部变量

分文件编程:

.c源文件:存放函数的定义;.h头文件:存放函数的声明和类型的定义;mai

这篇关于C语言随笔集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/938564

相关文章

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

Go语言使用sync.Mutex实现资源加锁

《Go语言使用sync.Mutex实现资源加锁》数据共享是一把双刃剑,Go语言为我们提供了sync.Mutex,一种最基础也是最常用的加锁方式,用于保证在任意时刻只有一个goroutine能访问共享... 目录一、什么是 Mutex二、为什么需要加锁三、实战案例:并发安全的计数器1. 未加锁示例(存在竞态)

C语言自定义类型之联合和枚举解读

《C语言自定义类型之联合和枚举解读》联合体共享内存,大小由最大成员决定,遵循对齐规则;枚举类型列举可能值,提升可读性和类型安全性,两者在C语言中用于优化内存和程序效率... 目录一、联合体1.1 联合体类型的声明1.2 联合体的特点1.2.1 特点11.2.2 特点21.2.3 特点31.3 联合体的大小1

Go语言使用select监听多个channel的示例详解

《Go语言使用select监听多个channel的示例详解》本文将聚焦Go并发中的一个强力工具,select,这篇文章将通过实际案例学习如何优雅地监听多个Channel,实现多任务处理、超时控制和非阻... 目录一、前言:为什么要使用select二、实战目标三、案例代码:监听两个任务结果和超时四、运行示例五

C语言中%zu的用法解读

《C语言中%zu的用法解读》size_t是无符号整数类型,用于表示对象大小或内存操作结果,%zu是C99标准中专为size_t设计的printf占位符,避免因类型不匹配导致错误,使用%u或%d可能引发... 目录size_t 类型与 %zu 占位符%zu 的用途替代占位符的风险兼容性说明其他相关占位符验证示