c语言基础——指针(一)
程序员文章站
2024-03-07 16:15:27
...
- 数组作为函数参数传递,在函数内部改变数组的值,是会最终改变数组的值的
- 当需要在函数内改变指针指向的内存块时,需要使用指向指向的指针作为函数参数,才能改变指针的指向
指针
-
虚拟内存和指针
每个程序都假定自己能够访问机器的整个物理内存空间,实际上却不是。程序使用的地址是虚拟地址。操作系统会在需要时把虚拟地址映射为物理地址。应用程序的虚拟地址不会变,就是我们在查看指针内容时看到的地址。操作系统会帮我们将虚拟地址映射为真实地址。
-
数组指针
例如 int (*p)[10],这是一个数组指针,指向一个一维整形的数组,这个数组的长度是10,也就是说当p+1时,p要跨过10个整型数据的长度。
数组指针也称为行指针,将二维数组赋值给一个指针时,该指针就是行指针
例如:
int num[4][5];
int *p[5];//该语句是定义一个数组指针,指向含5个元素的一维数组。
p=num;//将该二维数组的首地址赋给p,也就是num[0]或num[0][0]
p++; //该语句执行过后,也就是p=p+1;p跨过行num[0][]指向了行num[1][]
-
指针数组
指针数组,由指针组成的数组。
例如,int *p[10],表示声明了包含10个指向整形的指针的数组,这里执行p+1的时候,表示指向数字中的下一个元素,也就是下一个指针(因为该数组里的元素是指针)。数组指针只是一个指针变量,似乎是C语言里专门用来指向二维数组的,它占有内存中一个指针的存储空间。指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间。
上一篇: 2.3复合类型---指针
下一篇: C语言之对多维数组的简单理解