指针篇(高)

本文详细介绍了C语言中的指针概念,包括字符指针、指针数组、数组指针及其使用,数组参数与指针参数的区别,以及函数指针的各种应用场景,如函数指针数组、函数指针数组指针和回调函数的使用。通过实例解析了数组指针的定义与操作,以及一些特殊的指针用法。
摘要由CSDN通过智能技术生成

1.字符指针

字符指针是一个指向字符串的指针,它存储着一个字符地址,指向一个常量字符串,并且字符串不可修改。

以下是定义:

const char* ch="abcd";//"abcd"称为常量字符串

因为ch指针指向的字符串不能被修改,而且被修改了程序会奔溃,因此可以加上const
ch储存着常量字符串的首元素地址,也就是’a’的地址,"abcd"是常量字符串,不能被修改,被储存在只读数据区,当被引用时返回首字符地址。

这里我讲讲被常量字符串被调用返回的情况:

const char ch1 ="abcd";
const char ch2 ="abcd";
printf("%p\n",ch1);
printf("%p\n",ch2);

上面的结果是ch1和ch2的值是相同的,因为相同的常量字符串在只读数据区中储存的空间是相同的。

2.指针数组

指针数组是一个数组,只是用来存放指针的一个数组*

char* arr1[10];//存放一级字符指针的数组
int* arr1[10];//存放一级整形指针的数据
int** arr2[10];//存放二级整形指针的数据

3.数组指针

3.1 数组指针的定义

指针数组不是指针,只是一个存放指针的数组
而数组指针则是一个指向数组的指针

定义:

char arr1[10]; //指针数组
char (*arr2)[10];//数组指针
char *(*arr3)[10];//数组指针

’ [] ‘操作符的优先级比’ * ‘操作符的优先级高,所以arr1会先和’ [] '结合,形成数组,然后剩下的char就是数组存储数据的类型

arr2在括号的影响下先和’ * '结合,所以arr2代表的是一个数组指针,而剩下的char 变量名 [10] ;是代表指向数组的类型

同理:arr3也是一个数组指针,指向的是一个类型为char* [10] 的数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值