您的位置:首页 > 科技 > IT业 > 海南注册公司多少钱_云南省建设工程信息服务平台_百度电商平台_历史权重查询

海南注册公司多少钱_云南省建设工程信息服务平台_百度电商平台_历史权重查询

2024/10/10 9:00:06 来源:https://blog.csdn.net/xuanxuan_Fly/article/details/139456411  浏览:    关键词:海南注册公司多少钱_云南省建设工程信息服务平台_百度电商平台_历史权重查询
海南注册公司多少钱_云南省建设工程信息服务平台_百度电商平台_历史权重查询

(一)指针数组

1、本质:指针数组的本质任然是数组

2、基本格式:int* arr[5]

3、应用:如尝试使用指针来模拟二维数组

先来看代码

#include<stdio.h>
//指针数组——模拟实现二维数组
int main()
{int a[5] = { 1,2,3,4,5 };//定义两个数组a,bint b[5] = { 1,2,3,4,5, };int* arr[2] = { a,b };//定义一个数组存放a和b,由于数组名为首元素地址,所以该数组类型为指针int i, j = 0;//打印a,b的元素for (i = 0;i < 2;i++){for (j = 0;j < 5;j++){printf("% d", *(arr[i] + j));//解引用,arr[i]+j 指向第i行,第j列,然后*(arr[i]+j)取出元素}printf("\n");}return 0;
}

具体原理可以看代码注释

(二)数组指针

1、数组指针基本知识

(1)本质:指针

(2)写法:

 int arr[5] = { 0 }; //定义一个数组

 int (*parr) [5] = &arr;//&arr取的是整个数组的地址

double* b[5] = {0};//定义一个指针数组

double*(*pb)[5] = &b;//(*pb)表明是个指针,[5]表示指向数组,double*说明指向的数组类型,也就是该指针的类型

2、数组名和&数组名的区别

(1)数组名:在之前的学习中我们已经知道了数组名就是数组首元素的地址。

(2)&数组名:&数组名也是指向数组的首元素。。。

?或许你现在很疑惑,既然这两种方式都会指向数组的首元素,那么究竟有什么不同呢

先来看一段代码:

  

显然,根据上图我们可以知道,arr和&arr所指向的位置是相同的,但其本质是不同的!!!

(3)不同点:类型不同

        1.数组名:代表的是数组首元素的地址

        2.&数组名:是整个数组的地址

由上图所示,我们可以看出

(1)数组名和&数组名使用指针来写的时候格式不同

(2)arr 和 arr+1 之间的地址相差了4个字节,也就是一个元素;&arr 和 &arr+1 则是相差了40个字节,也就是一个数组的大小

3、练习

(1)对于该代码:int(*pa[10])[5] 你认为是什么呢?

(2)定义一个二维数组,尝试使用函数的形式来打印其中的元素,要求形参为数组指针类型

(答案将在下一篇文章中呈现,希望读者能自己敲一敲!!!)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com