欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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语言里专门用来指向二维数组的,它占有内存中一个指针的存储空间。指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间。

相关标签: c++