C语言指针概念的笔记

 指针的概念

指针是一个变量类型,所定义的变量用于存放地址

初始化格式为:指针类型+变量名-> 例子:int *p或者int* p都可以定义一个指针

最简单的使用方式:int a = 10; int *p = &a; //其中变量类型要相对应,比如int要对应int*,char要对应char*。

为什么要用到指针变量

第一个用法是:想使用的函数对main函数中的实际参数进行操作时,则需要将实际参数的地址传递给函数,函数的形式参数就要定义成指针变量来接受传递过来的地址;

第二个用法是:想要对指定的地址进行操作,这种情况则需要利用指针变量来接收。

指针、数组和函数的合用

指针与一维数组:其实在用法上一级指针与一维数组是较为相似的,数组名代表着数组的首地址。将一维数组的首地址赋给指针变量,int arr[3]={1,2,3}; int *p = arr; 循环遍历arr[i]或*(p+i)都可以将数组的值打印出来。

指针与二维数组:利用指针来表达二维数组其实不太符合,不过因为数组的地址是连续的,因此可以将二维数组看成一个大的一维数组,利用一级指针也是可以表达出来,不过这样子感觉就少了个维度一样。因此引入了一个数组指针的定义。初始化定义为:int (*p) [4]; 可以对应二维数组arr[][4],将p=arr之后,则可以利用*(*(p+i)+j)来访问二维数组的值。

指针数组:int (*p)[10]  一个指向10个整型数的数组的指针;

数组指针: int *p[10]  一个有10个指针的数组;

函数指针:int (*p)(int , int ) 一个指向函数的指针,该函数返回值为整型数;

指针函数:int* hanshu(int data1,int data2) 一个函数,返回值为指针变量;

结合:int (*p[10])(int , int ) 一个有十个指针的数组,每个指针指向一个函数,返回值为整型数;

        int (*(*hanshu)(int , int ))(int) 分为两层,内层是一个返回值为函数指针的函数指针,外层是一个返回值为整型值的函数。

多级指针

二级指针:一级指针是存放变量的地址,此时指针变量存放的内容是变量的地址,而一级指针的地址可由二级指针来接收,就可以通过二级指针间接访问变量的内容;

例子:int a=10; int *p=&a; int **p2=&p;假如a的地址为0x1234,p存放就是0x1234,p的地址为0xFE14,p2的内容为0xFE14,以此类推,p2的地址可由三级指针接收;

此时a=*p=**p2=10

仅作个人学习记录,有错误希望指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值