![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 62
凯家勇士
这个作者很懒,什么都没留下…
展开
-
指针常量与常量指针
指针常量与常量指针原创 2022-07-15 10:22:24 · 1033 阅读 · 1 评论 -
do...while(0)的妙用
在C++中,有三种类型的循环语句:for, while, 和do…while, 但是在一般应用中作循环时,我们可能用for和while要多一些,do…while相对不受重视。但是,最近在读我们项目的代码时,却发现了do…while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。do…while(0)消除goto语句。通常,如果在一个函数中开始要分配一些资源,然后在中途执行过程中如果遇到错误则退出函数,当然,退出前先释放资源,我们的代码可能是这样//version1b.转载 2020-11-27 12:06:38 · 129 阅读 · 0 评论 -
各种数据类型在16位、32位和64位系统下所占字节差异简介
转载 2020-11-08 09:31:37 · 166 阅读 · 0 评论 -
各种数据类型在16位、32位和64位系统下所占字节差异简介
编写C、C++程序时需要考虑每种数据类型在内存中所占的内存大小,即使同一种数据类型在不同平台下所占内存大小亦不相同,具体对比如下:转载 2020-09-04 11:03:46 · 260 阅读 · 0 评论 -
C语言 ---- FILE文件操作
文件操作C语言文件为流式文件,进行C语言文件的存取时,都会先进行“打开文件”操作,这个操作就是在打开数据流,而“关闭文件”操作就是关闭数据流。读取文件当进行文件读取时,不会直接对磁盘进行读取,而是先打开数据流,将磁盘上的文件信息拷贝到缓冲区内,然后程序再从缓冲区中读取所需数据,如下图所示:写入文件当写入文件时,并不会马上写入磁盘中,而是先写入缓冲区,只有在缓冲区已满或“关闭文件”时,才会将数据写入磁盘,如下图所示。打开文件fp = fopen("c:\\test.txt", "r") //原创 2020-08-01 21:58:32 · 491 阅读 · 0 评论 -
float浮点数的二进制存储方式图解
首先先讲怎么将小数转换成二进制数字(两个实例)1、对于数字 80.125,怎么将其转换成二进制呢?对于整数部分 80 转换成二进制,就是 1010000而对于小数部分 0.125,可以看下面的图( 一直乘 2 ,遇到 1 退出。如果乘 2 之后的数字大于 1,则减去 1 )所以 0.125 转换成小数就是 0.001所以 80.125 转换成的二进制数就是1010000.0012、对于数字 12.2,怎么将其转换成二进制呢?对于整数部分 12 转换成二进制,就是 1100而对于小数部分 0转载 2020-07-25 21:47:08 · 1303 阅读 · 1 评论 -
C语言 ---- volatile关键字的作用
Volatile意思是“易变的”,应该解释为“直接存取原始内存地址”比较合适。作用:volatile的作业的是告诉编译器不要对该变量进行优化,这个变量可能会有意向不想的改变,然后都会直接从变量内存地址中读取数据,从而可以提供对特殊地址的稳定访问。如果没有volatile声明,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。编译器优化介绍: 由于内存访问速度远不及CPU处理速度,为提高机器整体性能,1)在硬件上: 引入硬件高速缓存Cac原创 2020-07-23 16:29:38 · 405 阅读 · 0 评论 -
C语言 ---- 左移、右移、逻辑右移、算数右移
左移:丢弃最高位,往左移位,右边空出来的位置补0右移:右移有逻辑右移和算数右移逻辑右移:丢弃最低位,向右移位,左边空出来的位置补0算数右移:丢弃最低位,向右移位,左边空出来的位置补原来的符号位(即补最高位)一、算数右移int a = 1;unsigned int b = (a << 31) >> 31;整型a:0000 0000 0000 0000 0000 0000 0000 0001左移31位后:10000000 00000000 00000000 0000.原创 2020-07-20 15:10:10 · 2580 阅读 · 0 评论 -
C语言 ---- 字符串指针(指向字符串的指针)
字符串一旦被创建就存在于常量池中。以字符数组形式创建的字符串,实际上是从字符串常量池中复制了一个副本,所以修改字符数组的内容时,只是修改的自己的副本,并不会影响到常量池中的字符串。而对字符串指针strp操作时会影响到常量池中的字符串 char strc[] = "string"; char *strp = "string"; printf("字符串在常量池中的地址:%p\n","string");//0x100000f33 printf("以字符数组方式定义的数组原创 2020-07-17 16:45:49 · 257 阅读 · 0 评论 -
C语言 ---- const关键字的用法
const的作用是限定一个变量不允许被改变,提高程序的健壮性一.修饰全局/局部变量const int n=5;int const n=5;用const修饰的变量不允许更改,一定要给变量初始化,否则之后就不能再进行赋值了。二.常量指针const int * n;int const * n;常量指针是指针指向的内容是常量,不能通过这个指针改变变量的值,但是可以通过其他的引用来改变变量的值。int a=5;const int* n=&a;a=6;也以指向其他的地址。int原创 2020-07-17 16:34:50 · 207 阅读 · 0 评论 -
C语言 ---- static关键字的作用详解
1. static全局变量与普通的全局变量有什么区别 ?全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,转载 2020-07-13 10:44:28 · 152 阅读 · 0 评论 -
C语言 ---- 函数指针数组用法
#include <stdio.h> int add(int a,int b){ return a+b;} int sub(int a,int b){ return a-b;} int mul(int a,int b){ return a*b;} int div(int a,int b){ return a/b;} void make_menu(){ printf("********************转载 2020-07-13 09:50:14 · 446 阅读 · 0 评论 -
C语言 ---- 指针函数与函数指针
概述指针函数和函数指针是C语言里两个比较绕的概念。但是不仅面试题爱考,实际应用中也比较广泛。很多人因为搞不清这两个概念,干脆就避而远之,我刚接触C语言的时候对这两个概念也比较模糊,特别是当指针函数、函数指针、函数指针变量、函数指针数组放在一块的时候,能把强迫症的人活活逼疯。其实如果理解了这些概念的本质,是不需要死记硬背的,理解起来也比较容易。指针函数指针函数: 顾名思义,它的本质是一个函数,不过它的返回值是一个指针。其声明的形式如下所示:ret *func(args, ...);其中,func转载 2020-07-13 09:47:39 · 4546 阅读 · 4 评论