《征服C指针》读书笔记
评价
对于学习过C语言和C++的,《征服C指针》推荐一读,能明白一些指针深层次的一些知识点,对于一些知识有一种顿悟的感觉。如果C语言不熟或者是初学者就没必要看这种书了。好好学基础知识吧。
知识总结
Chapter 1
- 实验结果
#include<stdio.h>
int main(void)
{
int array[5];
int *p;
int i;
//initialize a array
for(i = 0; i<5;++i){
array[i] = i;
}
p=array;
for(i = 0; i<5;++i){
printf("*(p+i)...%d\n",*(p+i));
}
for(i = 0; i<5;++i){
printf("p[i]...%d\n",p[i]);
}
for(i = 0; i<5;++i){
printf("i[p]...%d\n",i[p]);
}
for(i = 0; i<5;++i){
printf("array[i]...%d\n",array[i]);
}
for(i = 0; i<5;++i){
printf("i[array]...%d\n",i[array]);
}
return 0;
}
输出
Chapter 2 C如何使用内存
C语言变量有三种作用域,而除了作用域不同,还有存储期的差别。
- C语言变量的三种作用域
全局变量:源代码文件之间也可见
文件内部的静态变量:限制在所在源文件之内
局部变量:在{}
之内。
- 变量存储期:
静态存储期:全局变量,文件内部的静态变量,含有static
的局部变量都是持有静态存储期。这些统称为静态变量。它在程序结束之前一直存储在内存的同一个位置上。
自动存储期 :没有指定为static
的局部变量,持有自带存储期,称为自动变量。在语句块{}
结束之后释放。 - 三种内存区域的寿命:
静态变量:程序结束—程序结束
自动变量:{}
之内
通过malloc()
函数分配:到free()
结束
问题
Chapter 1
指针是什么?指针的加减运算时怎样计算的?
在说明数组声明语句中使用
[]
来声明一个数组,那么,为什么说在表达式语句中的下标运算符[]
和数组是没有关系的?如果试图将数组作为函数参数进行传递的话,那么实际上传递的是什么?
C语言为什么不做数组下标越界检查?
Chapter 2 C如何使用内存
- 什么是静态变量?什么是自动变量?在内存中是如何保存这两类型的变量的?