使用malloc函数模拟开辟一个3*5的整型二维数组,开辟好后,使用二维数组的下标访问形式,访问空间。
第一种办法:用指针数组:
- #include
- int main() {
- int** p = (int**)malloc(3 * sizeof(int*));//申请指针数组
- int i = 0;
- int j = 0;
- for (i = 0; i < 3; i++) {
- p[i] = (int*)malloc(4 * sizeof(int));
- }
- for (i = 0; i < 3; i++) {
- for (j = 0; j < 4; j++) {
- printf("%p ", &p[i][j]);
- }
- }
- for (i = 0; i < 3; i++) {
- free(p[i]);
- }
- free(p);
- return 0;
- }
例如:
int (*p)[4]:指针数组
通过指针表示二维数组
方法2:
1.数组指针就是指向数组的指针
2.可以通过这个数组指针对数组中的元素进行赋值
二维数组传参的本质:
- #include
- int main() {
- int(*p)[4] = (int(*)[][4])malloc(3 * 4 * sizeof(int));
- int i = 0; int j = 0;
- for (i = 0; i < 3; i++) {
- for (j = 0; j < 4; j++) {
- printf("%p ", &p[i][j]);
- }
- }
- free(p);
- return 0;
- }
方法3:
- #include
- int main() {
- int* p = (int*)malloc(3 * 4 * sizeof(int));
- int i = 0;
- int j = 0;
- for (i = 0; i < 3; i++) {
- for (j = 0; j < 4; j++) {
- printf("%p ", &p[4*i*j]);
- }
- }
- free(p);
- return 0;
- }