Bootstrap

【C语言】常量指针和指针常量,指针数组和数组指针,指针函数和函数指针怎么区分?

1、常量指针和指针常量

int a = 0;
const int* p = &a;//常量指针
int* const p1 = &a;//指针常量

常量指针:无法通过该指针修改指向地址中的内容。
指针常量:指针指向的地址不可变。

2、指针数组和数组指针

int* p_arr[3];//指针数组
int(*p_arr1)[3];//数组指针

指针数组:数组内是指针类型的数据。
数组指针:指向一个完整数组的指针,虽然p_arr1存放的是数组的首地址,但是范围是全部数组的范围,p_arr1+1内存地址加12个字节。

3、指针函数和函数指针

int a = 0;
int* func()//指针函数
{
	return &a;
}
int func1(int a, int b)
{
	return a + b;
}
int *func2(int a, int b);
func2 = func1//函数指针

指针函数:返回值为指针的函数。
函数指针:指向函数的指针,函数的名称本身也是函数指针

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;