随笔分类 - C和指针读书笔记
摘要:直接上代码,分别是栈上开辟内存,堆上开辟内存 如果是用指针来复制数组,不要用以下代码 因为没有开辟内存,直接对指针自增会出现访问冲突
阅读全文
摘要:彻底搞定C指针-函数名与函数指针 函数名&函数名取地址 函数指针 通常我们可以将指针指向某类型的变量,称为类型指针(如,整型指针)。若将一个指针指向函数,则称为函数指针。 函数名的意义 函数名代表函数的入口地址,同样的,我们可以通过根据该地址进行函数调用,而非直接调用函数名。 另外,还有以下结论:
阅读全文
摘要:sprintf常用于连接字符串或数字转字符串 sscanf常用于跳过数据或匹配字符
阅读全文
摘要:拷贝有两种:深拷贝,浅拷贝 浅拷贝:拷贝过程中是按字节复制的,对于指针型成员变量只复制指针本身,而不复制指针所指向的目标 (1)结构体中不存在指针成员变量时 (2)结构体中存在指针成员变量时 运行该结构体赋值,出现报错: 浅拷贝存在的问题:当出现类的等号赋值时,系统会调用默认的拷贝函数——即浅拷贝,
阅读全文
摘要:c语言 返回局部变量 局部指针 局部数组 讨论这个问题之前,一定要理解堆区和栈区的工作原理,数据的存储区域(参考内存四区模型),另外一定不要返回局部对象或变量的引用和指针。 局部变量 局部变量分局部自动变量和局部静态变量,由于c返回的是值,因此返回一个局部变量是可以的,无论自动还是静态,因为这时候返
阅读全文
摘要:内存可以先粗略的分为四个区,分别是代码区,数据区,栈区和堆区。其中,数据区可以分为全局区/静态区、常量区。 数据区内容的生命周期从程序开始到程序终止;栈区的内容从函数左括号开始,到右括号为止,函数结束后,内存自动释放回收;堆区的内容由程序员自己开辟,手动释放。 代码区: 程序指令 数据区:(全局区/
阅读全文
摘要:Visual Studio调试时,出现“触发一个断点”内存释放出现异常 数组和对应指针的NULL初始化 数组使用之前要先对其初始化 对应指针进行动态初始化 分配内存后,需要对内存进行释放,程序对内存进行释放后,并不会将其置为NULL,必须手动将指针置为NULL,防止访问野指针或再次释放出错。 释放内
阅读全文
摘要:动态分配内存专题 关于动态分配内存: 局部变量在栈中分配空间,静态变量和全局变量在静态存储区分配空间,动态内存分配,主要是在堆中分配空间。 为什么使用动态内存分配 1.声明数组时,必须在编译时知道他的长度,有些数组的长度常常在运行时才知道,若提前声明过大的数组,则会造成空间浪费。 2.当函数返回值为
阅读全文
摘要:C语言结构体初始化的四种方法 C语言聚合数据类型包括数组和结构体,其中数组中是相同类型的元素的集合,可以通过下标引用或之子很间接访问,但结构体各个成员可以是不同的数据类型。 结构声明 完整的结构声明:struct tag {number-list} variable-list; 黑体部分至少要出现两
阅读全文
摘要:字符串处理函数 1.字符串长度 strlen表示包含的字符的个数,size_t strlen(char cosnt *string), 返回的是size_t类型,它是无符号整数类型,在表达式中进行运算时必须强制转换成整型int,因为无符号数不可能是负的,如strlen(x) - strlen(y)
阅读全文
摘要:数组指针和指针数组 二级指针的作用详解 首先确定优先级:()>[]>*,另外数组指针,类比整型指针,表示指向数组的指针;指针数组,类比整型数组,表示元素为指针的数组。 数组指针 int (*p)[n] 首先()优先级高,它是一个指针,指向一个整型数组。n为数组的长度,当p+1时需要跨越n个整型数据的
阅读全文
摘要:指针是一个值为地址的变量,即存储地址的变量,地址没有数据类型之说,char *,int *都是一样的长度,跟机器有关。 int *a表示a地址处存储的值为整型。 指针的初始化 或者 指针的解引用 通过*b,可以对指针b进行解引用(间接访问)从而访问得到a的值。在指针解引用之前需要对它进行检查,判断b
阅读全文
摘要:位操作符:<<, >>,&,|,^表示左移位,右移位,与、或、异或。其中位的操纵可以很容易把指定位清零,置一。 复合赋值符:|=,&=,^=和+=操作符原理一致。 单目运算符:sizeof判断操作数的类型的类型长度,以字节为单位。若操作数是数组名,返回数组的长度。判断表达式的长度并不需要对表达式进行
阅读全文
摘要:C/C++中作用域详解 作用域 编译器可以确认的4种作用域-代码块作用域、文件作用域、函数作用域和原型作用域,一般来说,标识符(包括变量名和函数名)声明的位置决定它的作用域。 (1)代码块作用域 一对花括号成为一个代码块,任何在代码块开始位置声明的标识符(不包括代码块的函数名)具有代码块作用域。 代
阅读全文
摘要:C/C++中static关键字详解 静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。 static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏,对变量来讲,static变量存放在静态存储区,所以它具备持久性和默认值0。 1
阅读全文
摘要:extern关键字主要修饰变量或函数,表示该函数可以跨文件访问,或者表明该变量在其他文件定义,在此处引用。 1.extern修饰变量 (1)如果某变量int m在a.c中定义声明,则其他b.c文件访问时,需要用extern声明该变量才可以。 注意extern的严格声明,如在一个文件中声明char a
阅读全文

浙公网安备 33010602011771号