下面请看笔者对于进阶字符指针的详解!
int* arr1[10]; //整型指针的数组
char* arr2[2]; //一级字符指针的数组
char** arr3[5]; //二级字符指针的数组
上面的两个字符指针的数组,是由整型指针的数组借鉴而来!
下面请看代码,笔者用代码+解析的方式来带领大家理解!
#include <stdio.h> int main() { char* arr[5] = { "zhangsan","lisi","wangwu","hehe","ruhu" }; int i = 0; for (i = 0; i < 5; i++) { printf("%s\n", arr[i]); } return 0; }
在上述代码段中,笔者定义了: char* arr[5];类型的存放指针的数组,然后通过printf函数每次都打印出来!
但是,这里用了原先打印数组的方式来打印,并不是笔者创造该博客的所想思想!
所以将printf函数里面的内容进行简单更改为:
printf("%s\n",*(arr+i));
再这个代码中,读者应该也能看懂,毕竟这个是指针的入门知识!
对存放字符指针的数组: char* arr[5]; 进行分解为:
char* char* char* char* char*
每一个char* ,都指向该元素的首字母!即:‘z' , 'l' , 'w' , 'h', 'r' 五个字母!
该段代码段运行结果为:
下面请看笔者所写的:指针数组的精华部分:
#include <stdio.h> int main() { int arr1[5] = { 1,2,3,4,5 }; int arr2[5] = { 2,3,4,5,6 }; int arr3[5] = { 3,4,5,6,7 }; int* arr[3] = { arr1,arr2,arr3 }; int i = 0; int j = 0; for (i = 0; i < 3; i++) { for (j = 0; j < 5; j++) { printf("%d ", arr[i][j]); } printf("\n"); } return 0; }
在上面代码中,笔者定义了三个一维数组,并且通过一个指针数组将这三个一维数组进行联立起来!int* arr[3] = { arr1,arr2,arr3 }; 这个确实很难想到,毕竟很少有这样使用的方法,在此,笔者仅仅是用来模拟一下,仅供参考!
下面是笔者在画图板上面的操作!
在上面图片中,详细的讲解了:指针数组的简单运用过程!
首先在for循环里面,由 i 外层循环开始变化,到 j 内层循环变化,依次找到数组!并且打印出来!最后运行结果为:
该段内容大致已经结束,笔者对于指针数组部分,暂时先讲解到此,至于精彩部分,请看笔者后续!