随笔分类 - C/C++
用于记录C/C++的学习笔记。
摘要:1、this指针的用法 this是C++语言中的一个关键字,也是一个const指针,它指向当前对象,通过this指针可以访问当前对象的所有成员,所谓当前对象,是指正在使用的对象,例如:对于stu.show();,stu就是当前对象,而this指针就是指向stu。 下面是this指针用法的一个简单示例
阅读全文
摘要:1、前言 在学习C语言中发现,"指针函数"与"函数指针"比较容易搞错,最简单的辨别方式就是看函数名前面的指针*号有没有被括号()包含,如果被包含的,就是函数指针,反之则是指针函数。 2、指针函数 指针函数是指带指针的函数,即本质上是一个函数,函数的返回类型是某一类型的指针,指针函数的形式如下: 类型
阅读全文
摘要:1、简介 C语言中的getopt()函数是一个功能强大的命令行解析函数,属于POSIX标准,该函数的原型如下: #include <unistd.h> int getopt(int argc, char *const argv[], const char *optstring); extern ch
阅读全文
摘要:1、联合体简介 在C语言编程中,变量的定义是分配存储空间的过程,一般情况下,每个变量都具有自己的存储空间,但是,使用联合体可以实现在同一个内存空间中存储不同的数据类型,任一时刻存储一种数据类型,不是同时存储。 在C语言中,定义联合体的关键字为union,定义一个联合体类型的一般形式如下: union
阅读全文
摘要:1、C关键字 C语言中的关键字有32个: 数据类型关键字(12个)char, short, int, long, float, double, unsigned, signed, struct, union, enum, void 控制语句关键字(12个)if, else, switch, case
阅读全文
摘要:1、什么是static? static是C/C++中常用的修饰符,它可以用来控制变量或函数的存储方式和可见性。 (1)static的引入 在函数内部定义的变量,当程序执行到它的定义处时,就会在栈上分配空间,函数在栈上分配的空间在此函数执行结束后,就会释放掉,如果想将函数中的某个变量的值保存到下一次函
阅读全文
摘要:1、为什么使用volatile? C/C++中的volatile关键字和const对应,用来修饰变量,通常用于建立语言级别的memory barrier,volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,例如:操作系统、硬件或其它线程等,遇到该关键字声明的
阅读全文
摘要:1、简介 const是C/C++中的一个关键字,是一个类型限定符,const为constant的缩写,含义为不变的,不易改变的,使用该关键字能限定一个变量不允许改变,产生静态作用,在一定程度上能提高程序的安全性和可靠性。 2、const修饰普通类型变量 const int n = 1; //cons
阅读全文
摘要:1、前言 大端模式(Big-Endian),是指数据的高字节存储在内存的低地址中,而数据的低字节存储在内存的高地址中,这样的存储模式有点类似把数据当作字符串顺序处理,地址从小向大增加,而数据从高位到低位存放,通常和我们的阅读习惯一致。 小端模式(Little-Endian),是指数据的高字节存储在内
阅读全文
摘要:1、前言 在C语言中,可以使用rand()函数来产生一个随机数,但是这并不是真正意义上的随机数,是一个伪随机数,是通过一个数,也就是种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态分布,从而相当于产生了随机数,当计算机正常开机后,种子的值确定了,C语言中的srand()函
阅读全文
摘要:1、前言 C语言中的typedef是一个关键字,提供了一种声明标识符为类型别名的方式,能用来替换复杂的类型名,如果一个声明以typedef为存储类指定符,则其中每个声明符都会定义一个标识符为指定类型的别名,typedef声明不能为static或者extern,它不引入另一种类型,只会建立已经存在类型
阅读全文
摘要:1、基本概念 C程序是包含声明的一系列文本文件,通常是包含头文件和源文件,源文件的拓展名为.c,它们能经过翻译变成可执行程序,在操作系统调用其主函数时被执行,除非它自己就是OS程序或者其它独立程序,这时候入口是由编译器所决定。 2、编程基本步骤 C是一种编译性的语言,编写程序的过程主要分解为7个步骤
阅读全文
摘要:1、前言 C库函数sscanf()和scanf()函数类似,前者用于从字符串中读取格式化输入,后者则是从键盘(stdin)中格式化输入,该函数的声明如下所示: #include <stdio.h> int sscanf(const char *str, const char *format, ...
阅读全文
摘要:C中运算符优先级和结合性一览表: 在上表中能总结出一下规律: (1)结合方向只有三个是从右往左,其余都是从左往右; (2)逗号运算符的优先级最低; (3)对于优先级,有一个普遍规律:算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符,逻辑运算符中的“!”除外。 下图是一些容易出错的优先级问题
阅读全文
摘要:1、前言 C的位运算符有&(按位与)、|(按位或)、^(按位异或)、~(按位取反),位运算符把运算对象看作是由二进制位组成的位串信息,按位完成指定的运算,得到相应的结果。 2、位运算符 在上面提到的运算符中,~(按位取反)为单目运算符,其它的都为双目运算符,位运算符的优先级从高到低,依次为~、&、^
阅读全文
摘要:1、前言 什么是字节对齐呢?现代计算机中的内存空间都是按字节(byte)划分的,从理论上讲似乎任何类型的变量的访问都可以从任何地址开始,但是实际情况是在访问特定变量的时候经常需要在特定的内存地址进行访问,因此,就需要各种类型数据按照一定的规则在空间上排列,而不是顺序地一个接一个地排放,这就是字节对齐
阅读全文
摘要:1、前言 在C语言的结构体中,由于字节对齐的问题,所以成员的地址并不能直接根据数据类型的大小进行计算,使用宏offsetof可以获得结构体成员相对于结构体首地址的字节偏移量。 2、offsetof宏实现 在C标准库中offsetof的声明如下,需要包含头文件<stddef.h>: size_t of
阅读全文
摘要:1、Linux文件的基本操作 Linux文件的基本操作主要包括了文件的创建、打开、读写和关闭等基本操作。 1.1、文件操作系统调用 (1)创建文件系统函数 int creat(const char *pathname, mode_t mode); 参数: pathname:要创建文件的名称 mode
阅读全文
摘要:一、什么是内联函数 在C语言中,如果一些函数被频繁的调用,不断地用函数入栈,即函数栈,则会造成栈空间或者栈内存的大量消耗,为了解决这个问题,特别的引入了inline关键字,表示为内联函数。栈空间指的是函数内数据的内存空间,在一个系统下,栈空间的资源是有限的,假如频繁大量的使用就会因栈空间的不足而导致
阅读全文