赞
踩
一、指针
了解指针:1.指针就是个变量,用来存放地址,地址唯一标识一块内存空间。
2.指针的大小是固定4/8个字节(32位操作系统/64位操作系统)。
3.指针有类型,其类型决定了指针可以进行+-整数和解引用时的权限。
4.指针可以与指针在同一个数组下进行-运算。
二、指针的类型
先来举几个例子,比如:char *pc=NULL char类型指针变量,int *pi=NULL int类型的指针变量,从例子中可以看出指针的类型也就是对应C语言中的各种类型,只不过这种类型的变量是一个指针变量*p。
指针类型的作用:指针是指向地址的,那么它就可以在内存里前后移动,那么它的类型就决定它在内存中移动一步有多大距离。
注意:指针变量必须初始化,如果没有指向变量的地址,就初始化为NULL,否则就是未定义行为。
三、指针的级别
概述:指针有一、二、三甚至更高级别的指针,我只简单分析一下一级和二级指针,想开发自己大脑的可以深入研究。
一级指针:简单的来说就是存放地址的。
一级指针可以干什么?
1.指针可以指向一个存储变量/常量的地址,通过对地址的解引用可以访问该变量/常量;
2.指针也可以传递参数,强调:数组不引用指针传递参数会退化成指针,这会影响对数组在外部函数中执行其他的操作。通过指针传递数组就可以避免数组隐式退化成指针(或者传递一个数组,但是数组如果很大,那么拷贝开销会很大)。
举例:
二级指针:简单来说也是存放地址的,只不过存放的是一级指针变量的地址。
举例:
通过这个例子我给大家分析一下二级指针,首先定义一个一级指针*p,在对p取地址定义二级指针**pp,通过打印的对pp和&p二次解引用或者打印pp和&p的地址来判断pp是否指向p的地址,由图可知,两者一样,所以这就是二级指针。
四、指针和数组
说到指针和数组,便要想到数组名,我还是看例子说明。
数组名的意义:
1.sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小;
2.&(数组名),这里的数组名表示整个数组,取出的是整个数组的地址;
3.除此之外所有的数组名都表示首元素的地址。
举例:
通过代码运行结果可以看出,数组名和数组的首元素的地址是一样的,那么可以得出一个结论数组名就表示数组首元素的地址。
五、指针数组
指针数组是数组,可以这样理解指针是修饰语,用来修饰数组,也就是数组中每个元素都是一个指针类型的元素。
简单定义几个指针数组:int *arr[100]整形指针数组,char *arr[100]字符指针数组,char **arr[100]二级字符指针数组。
六、指针习题
1.
代码实现:
2.
3.
附加理解:
代码实现:
4.
代码实现:
5.
代码实现:
6.
代码实现:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。