学习笔记
《深入理解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); i++) {
*(pbuffer++) = 0;
}
-
sizeof(buffer)
表达式返回了80
- 用
sizeof(buffer)/sizeof(int)
来避免这个问题
网友评论