首页 > 代码库 > [C++]数组指针,数组引用,函数指针
[C++]数组指针,数组引用,函数指针
数组指针是指一个指向数组的指针,例如有一个数组指针p指向一个数组a[],则 *p是取到这个数组,也就是说 *p=a,因此 **p =a[0],
它的定义为:
int a[10]; int (*c)[10]=&a;
(*c)表示它是一个指针,若不加括号则变成 指针数组 ,[10]表示指向一个长度为10的数组,int 表示数组元素为int
因为函数不能返回数组,所以可以设置返回一个数组指针,即
auto fo2(int (&a)[10]) -> int (*)[10]{ a[5]=10; return &a; }
int (&a)[10] 是一个数组引用,
这里定义fo2的返回类型用了尾置返回类型,int (*)[10]是返回类型。如果直接定义函数,是
int (*fo2(int (&a)[10]))[10];
还是尾置返回清楚一点,:)
事实上虽然为了用指针指向一个数组可以用 int *p=a这样的方式,不过其实这里a跟p是两个东西,p只不过是指向了a头元素的地址,
因此sizeof(a) != sizeof(p),这里也就能理解为什么要用数组引用了,采用了数组引用后,
int fo(int *p){ return sizeof(p); } int fo1(int (&p)[10]){ return sizeof(p); }
fo1返回的就是正确的数组内存大小。
函数指针:
使用别名的方式:
typedef int (*f)(int);
f func;
直接定义:
int (*func)(int);
func可以指向任意一个参数为int ,返回为int的函数。
还可以定义函数指针数组:
int (*func[10])(int);
其实都跟定义数组差不多,形式上与函数保持一致就行了。
还有诸如指针的指针的引用:
int a; int *p=&a; int **&pp=&p;
引用也只是在名称前加个引用。
[C++]数组指针,数组引用,函数指针
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。