一、指针安全:指针的声明和初始化问题 1、指针不恰当的声明: 1)、声明的意思和真是的意图不一致,可以通过格式搞定; 2)、使用宏定义时,展开的含义有变,通过格式搞定; 3)、使用类型定义,使用更加方便 11#include <stdio.h>2233intmain(intargc,char**argv)44{55intvar1;66printf("input the var1:");77sc...
指针p未被初始化,可能含有垃圾数据 3、处理未初始化指针 总是用NULL来初始化指针 用assert函数 用第三方工具 把指针初始化为NULL更容易检查是否使用正确,即便这样,检查空值也比较麻烦,如下所示: int*pi =NULL; ...if(pi ==NULL) {//不应该解引pi}else{//可以使用pi} 我们可以使用assert函数来测试指针是否...
怎样让C语言指针更安全 使用NULL检查:在使用指针之前,始终检查指针是否为NULL,以避免悬空指针的问题。 限制指针的范围:确保指针只能指向有效的内存区域,避免越界访问。 使用const关键字:在声明指针时,如果指针所指向的数据是只读的,可以使用const关键字来限制对数据的修改。 动态内存分配与释放:在使用动态内存分配时,要...
深入理解C指针之---指针安全 一、指针安全:指针的声明和初始化问题 1、指针不恰当的声明: 1)、声明的意思和真是的意图不一致,可以通过格式搞定; 2)、使用宏定义时,展开的含义有变,通过格式搞定; 3)、使用类型定义,使用更加方便 11#include <stdio.h>2233intmain(intargc,char**argv)44{55intvar1;66printf...
软件检测实验室在建立软件测试体系或申请cnas/cma相关资质时,需要依据相关标准,使用有效的方法开展检验检测活动,GJB-8114是一部嵌入式软件安全测试相关的国家标准,本系列文章我们就针对GJB-8114《C/C++语言编程安全子集》的具体内容进行分析解读。 GJB-8114标准规则中一共有124条强制性规则,是按类分的,一共有13类,声...
int *p;//首先从P 处开始,先与*结合,所以说明P 是一个指针,然后再与int 结合,说明指针所指向的内容的类型为int 型.所以P是一个返回整型数据的指针. int p[3];//首先从P 处开始,先与[]结合,说明P 是一个数组,然后与int 结合,说明数组里的元素是整型的,所以P 是一个由整型数据组成的数组. int *p[...
R-1-3-1禁止指针的指针超过两级 大家都知道C语言最灵活的地方就是指针,大家使用C语言有两个原因,第一个原因是因为它计算得快,第二个原因是它支持各种指针操作。正式因为它太灵活了,它支持指针,所以在指针上最容易犯错误,所以在咱们这个规则中,使用指针最多只能使用两级,再多就不允许了。R-1-3-2函数...
上图中,指针变量p1指向了num所在的内存块 ,即从地址0028FF40开始的4个byte 的内存块。 这里学2个名词,读英文资料的时候可能会用到 pointer:指针,例如上面例子中的p1 pointee:被指向的数据对象,例如上面例子中的num 所以我们可以说:a pointer stores the address of a pointee ...
1、int*ptr;: 指针所指向的类型是int 2、char*ptr;: 指针所指向的的类型是char 3、int**ptr;: 指针所指向的的类型是int* 4、int(*ptr)[3];: 指针所指向的的类型是int()[3] 5、int*(*ptr)[4];: 指针所指向的的类型是int*()[4]