指针与数组

指针与一维数组:
int arr[5];
int *p = arr; arr == &arr == &(arr+0) == &arr[0]
一维数组名其实就是数组首元素的地址
数组名和普通的指针的区别在于 数组名不能作为左值
p[1] = = *(p+1) == arr[1] == *(arr+1)
&arr 数组的地址
&arr 和 arr 值相同 但类型不同
arr+1 偏移了一个数组元素的长度
&arr+1 偏移了整个数组的长度
int (*parr)[5] = &arr;
数组指针: 本质是一个指针 该指针指向一个数组
T (pname)[n];
数组指针pname指向一个一维数组 数组长度为n 数组中存储的元素类型为T
指针数组: 本质是一个数组 数组中的元素为指针
T * arr[n]; 数组中所有元素的类型为 T

	二维数组与指针:
		int arr[3][4] = {};
		int (*parr)[4] = arr == &*arr == &*(arr+0) ==  &arr[0]
		parr == arr == &arr[0]
		*parr == *arr == *&arr[0]  == arr[0]  ==  &arr[0][0]
		**parr ==  **arr  ==  *arr[0]  ==  arr[0][0]
		int *p = arr[0]  ==  &*arr[0]  == &*(arr[0]+0)   == &arr[0][0]
		*(*(arr+1)+2) === arr[1][2]
		int (*pa)[3][4] = &arr;
函数与指针:
	函数名即内存地址
	函数指针:  本质是指针  该指针指向一个函数
		T (*pname)(ARGS,...);
		函数指针pname 指向一个函数 该函数返回值类型为T,参数为ARGS  
		int * func(int *p){}
		int * (*pf)(int *);   //pf是一个函数指针变量
		pf = func;
		int a = 0;
		pf(&a);  //调用函数
指针函数:  本质是函数  函数返回一个指针类型
定义一个指针函数指针数组变量:    T* (*parr[n])(...)	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值