不久前在做某家公司的网测时遇到了关于数组指针和指针数组的问题,在复习C语言知识的时候简单看了一下,么有深究。所以在做题的时候,就只能靠猜测,不过后来还可以竟然也蒙对了。不过不能这样靠运气,万一某天不lucky了,就wrong answer了。还是要好好整理一下关于这方面的知识。
指针数组,从字面上理解就是这个数组里的元素是指针,也就是是一个某类型指针的数组。
例如:
int *p[4];
就是一个指针数组,数组p中的元素全部为int类型的指针。int *p[4]也等价于int *(p[4]),因为[]的优先级比*高。
数组指针,就是指向数组的指针。
例如:
int (*p)[4];
表示指向一个具有4个整型元素的数组。
使用方法:
#include <stdio.h> int main() { int c[4] = { 1, 2, 3, 4 }; int *a[4]; //指针数组 int(*b)[4]; //数组指针 b = &c; //将数组c中元素赋给数组a for (int i = 0; i<4; i++) { a[i] = &c[i]; } //输出看下结果 printf("%d ", *a[1]); printf("%d ", (*b)[2]); return 0; }