浅谈指针数组

举报
念君思宁 发表于 2023/02/15 14:10:57 2023/02/15
【摘要】 浅谈指针数组

笔者断断续续的停更了几日,望着那么多的存稿,感觉不发出来对不起关注的读者!思前想后,还是决定写些博客发出来,与大家共勉!

上次笔者的博客还是对:字符指针进行讲解!有意者请看笔者博客:参考链接为:字符指针的进阶_念君思宁的博客-CSDN博客

下面请看笔者对于进阶字符指针的详解!

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 内层循环变化,依次找到数组!并且打印出来!最后运行结果为:

 该段内容大致已经结束,笔者对于指针数组部分,暂时先讲解到此,至于精彩部分,请看笔者后续!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。