1、 指针和内存
1.1 为什么要精通指针
指针的几种用途:
- 写出高效快速的代码(指针接近硬件,可以更好的操控内存);
- 支持动态内存分配(使用malloc/free等函数对内存进行分配和释放);
- 是表达式变得紧凑和简洁
- 提供用指针传递数据结构的能力不会带来庞大的开销(只传递地址而不传递实际数据)
- 保护作为参数传递给函数的数据
- 容易实现多种数据结构(如链表等)
1.2声明指针
通过在数据类型后面跟星号,再加上指针变量的名字可以声明指针:
int * pi;
int* pi;
int *pi;
int *pi;
上述四种声明方式均合法,星号两边的空格无关紧要。
注意上述pi表示指针变量的名字,100表示指针变量所在的内存,而……部分表示的是指针Pi的内容,若没有对其进行初始化,则里面是垃圾数据或者不合法的内存数据。
垃圾数据。垃圾是指我们分配的内存中可能包含任何数据,当内存刚分配时不会被清理,之前的内容可能是任何东西,此时此数据就称之为垃圾数据。
*是一个被重载过的操作符,它既可以表示两个数相乘,也可以用来声明指针,第三个用途是用来解引用,即拿出指针所指向的内存中的数据。