C语言

    技术2025-04-25  10

    1.指针的定义

    将地址形象化地称为“指针”,地址指向该变量单元。

    按变量名访问称为直接访问

    使用指针称为间接访问(把变量地址赋给一个指针变量,间接访问,变量地址做中间量)

    指针变量:是用来存放地址的变量

    指针是一个地址

    2.指针变量的定义

    类型名 * 指针变量名; int * pointer_1, *pointer_2; //int是“基类型” int只能指向为整型的变量 float * pointer_3; //float指针 char * pointer_4; //char指针 指针变量前面的 * 表示该变量是指针变量,指针名是pointer_1

    3.指针变量的引用

    int a=1; int * pointer_1; pointer_1=&a //把a的地址赋值指针变量p print("%d", *p); *p=1 //等价 a=1

    (1)& 取地址运算符,&a是变量a的地址

    (2)* 指针运算符(或称 “间接访问” 运算符),*p代表指针变量p指向的对象

    4.指针变量作为函数参数

    void swap(int *p1,int *p2); //声明 swap(pointer_1,pointer_2); //调用

    5.通过指针引用数组

    (1)数组元素指针就是数组元素的地址

    int *p; p=&a[0]; 等价于 int *p=&a[0];

    (2)数组元素的指针运算

    指针加一个整数(+或+=) 如:p+1 指针减一个整数(用-或者-=)如:p-1 自增运算,如 p++,++p 自减运算,如 p--,--p p+1指向同一个数组中的下一个元素 p-1指向同一个数组中的上一个元素

    (3)数组的引用方式

    (1)下标法 a[i] (2)指针法 *(a+i)或 *(p+i)

    (4)用数组名做函数参数

    以变量名和数组名作为参数的比较 实参类型变量名数组名要求形参的类型变量名数组名或者指针变量传递的信息变量的值实参数组首个元素的地址通过函数调用能否改变实参的值不能改变实参变量的值能改变实参数组的值 int sort(int * p,int n); // 等价于 int sort(int a[],int n) // 调用 int *p,a[10]; p=a; sort(a,2); sort(p,2)

    6.通过指针引用多维数组

    二维数组a的有关指针  表示形式含义地址a二维数组名,指向一维数组a[0],即是0行首地址2000a[0],*(a+0),*a0行0列元素地址2000a+1,&[1]1行首地址2016a[1],*(a+1)1行0列元素a[1][0]的地址2016a[1]+2,*(a+1)+2,&a[1][2]1行2列元素a[1][2]的地址2024*(a[1]+2),*(*(a+1)+2),a[1][2]1行2列元素a[1][2]的值元素值为13

    用指向数组的指针作为函数参数

    void search(float (*p)[4],int n);

    一维数组有4个元素,因此p的基类型是一维数组,其长度为16字节

    Processed: 0.009, SQL: 9