指针高级(3)
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;
}