11.利用指针遍历第二种
不同:
第一种格式,因为是一起定义的,所以所有的数据在内存当中,都是连续的,且二维数组里面存的东西,完全不同
第一种格式,真的是把一维数组那个整体给放进来了,第二种格式当中,一维数组在外面,是把一维数组数组的指针放到了二维数组中,说白了,二维数组里面存的不是数据,仅仅是2个内存而已


代码
#include<stdio.h>
int main()
{
//1.定义3个一维数组
int arr1[5] = { 1,2,3,4,5 };
int arr2[5] = { 11,22,33,44,55 };
int arr3[5] = { 111,222,333,444,555 };
//2.把3个一维数组的内存地址,再放入这个二维数组当中
int* arr[3] = { arr1,arr2,arr3 };
//3.获取指针
int** p = arr;
//4.遍历数组
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 5; j++)
{
printf("%d ", *(*p +j));
}
//换行
printf("\n");
//移动指针
p++;
}
return 0;
}
12.数组指针和指针数组

13.函数指针
#include <stdio.h>
void method1();
int method2(int num1, int num2);
int main()
{
//定义指针指向2个函数
void (*p1)() = method1;
int (*p2)(int,int) = method2;
//2.利用函数指针去调用函数
p1();
int num = p2(10, 20);
printf("%d\n", num);
return 0;
}
void method1()
{
printf("method1\n");
}
int method2(int num1, int num2)
{
printf("method2\n");
return num1 + num2;
}