C语言中的 指针常量&&常量指针 指针函数&&函数指针 指针数组&&数组指针

这是C语言中比较容易混淆的几个定义,这里集中记录一下笔记

指针常量&&常量指针

char * const p;  //指针常量
const char *p;	 //常量指针
char const *p;	 //常量指针

首先对于这些定义要清除谁是修饰谁是本尊,如“指针常量”,“指针”只是修饰部分,“常量”才是本尊,所以我们申请的一个变量本质是一个常量,不可修改的,那么我们的变量p的指向就是不可修改的,而指向地址的数据是可修改的
对于“常量指针”,“常量”是修饰,“指针”是本尊,那么最终我们的变量p是一个指针,所以说变量指针p是可以修改的,但是指针指向地址的数据是不可修改的

助记:
*号表示指针,const表示常量,观察两者的相对位置,来记忆

指针函数&&函数指针

int * fun(...)  		//指针函数
int (*fun)(...)      //函数指针

根据上面所表述的,谁是修饰谁知本尊
指针函数:
本尊依然是函数,只是返回值是指针
函数指针:
本尊是指针,只是是一个指向函数的指针

指针数组&&数组指针

char *a[12];			//指针数组
char (*a)[12];		//数组指针

指针数组:
本体依然是数组,只是数组总保存的都是指针变量
数组指针
本体依然是指针,只是他是指向数组的指针,(行指针)

对以上的定义大概总结:
首先一般用 char *或者int *这种带类型+修饰的对象,我们其实就可以直接把他看做一种类型,因为这个字符的优先级比较低,所以我们大概可以把它放在最后来看,

你可能感兴趣的:(c语言指针使用,c语言,指针)