C语言
文章平均质量分 84
小菜鸡加油
菜鸡
什么都能折磨
展开
-
volatile关键字
volatile的作用保存内存的可见性。告诉编译器,volatile修饰的变量,不允许优化,对该变量的任何操作都必须再真实的内存中进行操作。volatile应用场景懒汉方式-单例模式懒汉方式中的静态对象指针要加volatile关键字防止过度优化出现问题。// 懒汉模式, 线程安全template <typename T>class Singleton { volatile static T* inst; // 需要设置 volatile 关键字, 否则可能被编译器优化.原创 2022-03-15 20:03:58 · 515 阅读 · 0 评论 -
C语言通讯录
主要目的是练习一下动态开辟内存和文件读写contact.h#pragma once#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include <malloc.h>#include<iostream>using namespace std;#define M 20//人的信息struct People{ char name[M]; char sex[M]; char address[M];原创 2021-09-21 17:32:34 · 660 阅读 · 0 评论 -
C程序环境与预处理
程序环境和预处理程序的翻译环境程序的执行环境详解:C语言程序的编译+链接预定义符号介绍预处理指令 #define宏和函数的对比预处理操作符#和##的介绍命令定义预处理指令#include预处理指令 #undef条件编译1.程序的翻译环境和执行环境在ANSI C的任何一种实现中,存在两个不同的环境翻译环境,在这个环境中源代码被转化成可执行的机器指令执行环境,用于实际执行代码2.详解编译+链接2.1翻译环境test.c原创 2021-10-07 16:15:06 · 172 阅读 · 0 评论 -
函数栈帧的创建和销毁以及与C、C++联系
函数栈帧的创建和销毁以及与C、C++联系重新补了一定的C基础和C++基础后,来结合csapp把函数栈帧简单复习一下1、什么是函数栈帧如果接触过指针,知道指针的大小在32位下是四个字节,在64位下是八个字节。那么指针的大小,就定义为一帧的大小。这就是栈帧。什么是函数栈帧呢?首先在代码的数据和函数存储,可以大致分为几个区。栈区:存放局部变量,形式参数堆区:动态内存分配,如malloc,calloc,realloc,free静态区:存放全局变量,静态变量当然在链接那一块更加细分,不过这里大致原创 2021-09-10 11:49:42 · 203 阅读 · 0 评论 -
C语言动态内存管理
动态内存管理考虑到数组不能定死,因此需要动态开辟空间。为什么存在动态内存分配int val=20;char arr[10]={0};空间开辟大小是固定的数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配栈区:局部变量,函数形参堆区:malloc,calloc,free,realloc静态区(数据段):全局变量,静态变量动态内存函数的介绍1.malloc和freevoid* malloc(size_t size);malloc这个函数向内存申请一块连续可用的空间原创 2021-09-23 15:55:49 · 76 阅读 · 0 评论 -
C语言--程序环境和预处理
程序环境和预处理程序的翻译环境程序的执行环境详解:C语言程序的编译+链接预定义符号介绍预处理指令 #define宏和函数的对比预处理操作符#和##的介绍命令定义预处理指令#include预处理指令 #undef条件编译1.程序的翻译环境和执行环境在ANSI C的任何一种实现中,存在两个不同的环境翻译环境,在这个环境中源代码被转化成可执行的机器指令执行环境,用于实际执行代码2.详解编译+链接2.1翻译环境test.c原创 2021-09-20 23:29:50 · 572 阅读 · 0 评论 -
C语言--自定义类型详解(结构体+枚举+联合)
自定义类型详解(结构体+枚举+联合)结构体结构体类型的声明struct tag{ member-list}variable-list;struct Book{ char name[20]; char author[20];}s1;struct Book s2;int main(){ struct Book s3; }特殊声明-匿名结构体struct //匿名结构体类型{ int a; char c; double d;}s1原创 2021-09-21 20:26:39 · 300 阅读 · 0 评论 -
C/C++指针整理(C部分)
C/C++指针整理(C部分)文章目录C/C++指针整理(C部分)1.什么是指针1.1指针的大小1.2指针的声明和类型及解引用1.3指针的运算1.3.1指针+-整数1.3.2指针+-指针2.什么是野指针2.1野指针的成因2.1.1指针未初始化2.1.2指针越界访问2.1.3指针指向的内存释放了2.1.3.1函数栈帧中在栈上的内存2.1.3.2堆上的内存释放2.2规避野指针的方法3.指针和数组的关系3.1**结论**3.2数组名和数组首元素的地址3.3 数组名VS&数组名4.二(多)级指针5.指针数组原创 2021-10-14 20:49:08 · 928 阅读 · 2 评论 -
C语言-字符串函数和内存函数
字符串前言C语言中对字符和字符串的处理很频繁,但是C语言本身是没有字符串类型的,字符串通常放在 常量字符串中或者字符数组中。字符串常量适用于那些对它不做修改的字符串函数。对于比赛的时候或者面试的时候,使用这些库函数不仅可以大大减少时间,还可以提高模拟的效率。其实是十分有帮助的。求字符串长度函数strlensize_t strlen(const char* string);size_t=unsigned int字符串以’\0’作为结束标志,strlen函数返回的是在字符串中’\0’前面出现原创 2021-09-22 12:57:28 · 103 阅读 · 0 评论 -
C语言的文件操作
文件操作1.为什么使用文件为了进行持久化的保存,把数据存放在硬盘上。2、什么是文件磁盘上的文件是文件程序设计中,一般谈到的是程序文件和数据文件程序文件.c,.obj,.exe…数据文件文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行时需要从中读取数据的文件文件名文件名包含3部分:文件路径+文件名主干+文件后缀例如:C:\code\test.txt。一般将文件标识被称为文件名。3.文件的打开和关闭3.1文件指针缓冲文件系统中,关键的概念是“文原创 2021-10-07 09:20:58 · 254 阅读 · 0 评论