[C指针]安全使用指针

学习笔记

《深入理解C指针》
http://www.ituring.com.cn/book/1147
第7章 安全问题和指针误用

安全使用指针

类型定义

类型定义代替宏定义是另一个好习惯。类型定义允许编译器检查作用域规则,而宏定义不一定会。

typedef int* PINT;
PINT ptr1, ptr2;
  • 两个变量均被声明为整数指针。

检查返回值

malloc这类函数时一定要检查返回值,否则可能会导致程序非正常终止。下面说明一般的方法:

float *vector = malloc(20 * sizeof(float));
if(vector == NULL) {
    // malloc分配内存失败
} else {
    // 处理vector 
}

星号

在原声明int *pi = &num中,星号把变量声明为指针,而不是解引操作。

传递数组长度

将数组传递给函数时,一定要同时传递数组长度。这个信息帮助函数避免越过数组边界。

int buffer[20];
int *pbuffer = buffer;
for(int i=0; i
  • sizeof(buffer)表达式返回了80
  • sizeof(buffer)/sizeof(int)来避免这个问题

你可能感兴趣的:([C指针]安全使用指针)