当前位置: 首页 > news >正文

网站收藏代码公众号免费推广平台

网站收藏代码,公众号免费推广平台,电竞logo免费设计,微信群推广佣金平台在实际c语言编程中,三维及以上数组我们使用的很少,二维数组我们使用得较多。说到数组,又不得关联到指针,因为他们两者的联系太紧密了。今天我们就详细介绍下c语言下的多维数组(主要是介绍二维数组)和指针。 一、二维数组 1.1&am…

    在实际c语言编程中,三维及以上数组我们使用的很少,二维数组我们使用得较多。说到数组,又不得关联到指针,因为他们两者的联系太紧密了。今天我们就详细介绍下c语言下的多维数组(主要是介绍二维数组)和指针。

一、二维数组

1.1,存储格式

    一般大家看待二维数,都会把它看作一张表格,例如一个int a[3][4]的数组:

    实际上,计算机中二维数组是以顺序的方式存储的,其内部存储格式如下,还是以int a[3][4]为例子:

1.2,二维数组声明和访问

    我们可以通过如下方式进行二维数组声明和初始化:

    char c[3][10]; //声明一个char类型的二维数组,它是包含3个长度为10的char数组int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; //声明并初始化一个int类型的二维数组并初始化

   二维数组的访问:

    int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};for(int i=0;i<3;i++){for(int j=0;j<4;j++){printf("the element a[i][j] is %d\n", a[i][j]);}}

    

    我们也可以利用指针的形式进行访问(数组的名字实际代表的数组首地址):

 

    int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};for(int i=0;i<3;i++){for(int j=0;j<4;j++){printf("the element a[i][j] is %d\n", *(*(a+i)+j));}}

 二、指针数组

 2.1,指针数组存储格式

    指针数组代表某一数组中的所有元素都是指针,其内部存储格式如下,我们以int *p[3]为例:

    具体代码如下:

int main() {int a = 100;int b = 200;int c = 300;int *p[3] = {&a, &b, &c};printf("the a address is %x\n", p[0]);printf("the a address is %x\n", p[1]);printf("the a address is %x\n", p[2]);return 0;
}

 

 2.2,指针数组的声明和访问

    我们可以通过如下方式进行指针数组的声明和初始化;

    char *c[10];//声明一个包含10个char类型指针的数组int a = 100;int b = 200;int c = 300;int *p[3] = {&a, &b, &c};//声明一个包含3个int类型指针数组,并进行了初始化

    指针数组的访问,我们可以通过如下两种方式进行指针数组指向内容的访问:

int main() {int a = 100;int b = 200;int c = 300;int *p[3] = {&a, &b, &c};for(int i=0;i<3;i++){printf("the element i point to value is %d\n", *p[i]);}for(int j=0;j<3;j++){printf("the element i point to value is %d\n", **(p+j));}return 0;
}

 

三、二维数组与指针数组的比对

    我们可以看到,对于二维数组和指针数组,我们都可以通过*(*(a+i)+j)的方式去访问,于是很多人误认为二维数组和指针数组是同一个东西,然两者其实还是有区别的。

    对于二维数组

char a[3][4] = {{'t','p','c'},{'i','s'},{'m','a','n'}}

    无论每个数组中元素是否存储值,它的存储空间必需为sizeof(char)*3*4的。 

    二维数组元素访问(*(*(a+i)+j)),a的地址在程序编译阶段即可知道,我们获取数组某个元素,然后如下进行:

  • 1,取a的地址值
  • 2,取i的值,得知需要获取跨过的行长度(sizeof(char)*4*i),然后加到a地址值上
  • 3,取j的值,得知需要获取跨过的元素长度(sizeof(char)*j),然后加到上一步得到的地址上
  • 4,从第3步获取的地址,得到需要取得的元素的地址,从中取出值

    对于指针数组

char *a[3] = {"tpc","is","good"};

    a中存在4个char类型指针,每个指针指向的一个char类型数组,但是每个数组的长度不一样。 

    指针数组元素访问(*(*(a+i)+j)),a的地址在程序编译阶段即可知道,我们需要获取数组某个元素,需要如下进行: 

  • 1,取a的地址值(假设为100)
  • 2,取i的值,得知需要跨过的元素的字节长度(sizeof(char *)*i,然后的到具体元素的地址,值为100+sizeof(char *)*i(假设求出来为104)
  • 3,根据地址值104(因为a[i]为指针,我们需要根据指针值再去获取指向内容),我们得到内部存储地址为0x4071d4
  • 4,取j的值,得知需要跨过的元素字节长度(sizeof(char)*j)(假设j为1),那么我们得到需要取得元素的地址为0x4071d4+sizeof(char)*1 = 0x4071d5
  • 5,从0x4071d5中取出内容(对应图中的's')

四、数组指针

    对应一个二维数组,如果我们需要通过声明一个指针来指向它,可以通过如下方式:

int main() {int a[2][3] = {1,2,3,4,5};int (*p)[3] = a;printf("the address of a is %d\n", a);printf("the value of p is %d\n", p);}

 

    我们通过如下方式利用指针访问a中元素。

  • 1,获取指针p存储的值,得到a的地址,a为一个包含2个含有3个元素的数值
  • 2,我们通过p+i,及a+i获取a中对应2个数组元素的首地址 
  • 3,我们通过*(p+i)+j,获取对应数组元素中的具体元素地址
  • 4,我们通过*(*(p+i)+j),获取到具体的元素值
int main() {int a[2][3] = {1,2,3,4,5};int (*p)[3] = a;for(int i=0;i<2;i++)for(int j=0;j<3;j++)printf("the element a[%d][%d] is %d\n", i, j, *(*(p+i)+j));}

 


文章转载自:
http://anisole.spfh.cn
http://parakeratosis.spfh.cn
http://overmatch.spfh.cn
http://outwent.spfh.cn
http://rpc.spfh.cn
http://intrepidity.spfh.cn
http://semicentennial.spfh.cn
http://femineity.spfh.cn
http://kirsch.spfh.cn
http://sclc.spfh.cn
http://lass.spfh.cn
http://husking.spfh.cn
http://quercitrin.spfh.cn
http://streptomycete.spfh.cn
http://dovishness.spfh.cn
http://headborough.spfh.cn
http://synclinal.spfh.cn
http://armed.spfh.cn
http://kennetic.spfh.cn
http://podalic.spfh.cn
http://vitellogenesis.spfh.cn
http://changeable.spfh.cn
http://homogeny.spfh.cn
http://indestructibly.spfh.cn
http://trichogyne.spfh.cn
http://neurochemist.spfh.cn
http://hartshorn.spfh.cn
http://untimeous.spfh.cn
http://ploughshare.spfh.cn
http://genealogy.spfh.cn
http://annulated.spfh.cn
http://dreamily.spfh.cn
http://sheffield.spfh.cn
http://ruff.spfh.cn
http://mutoscope.spfh.cn
http://sleuth.spfh.cn
http://curlily.spfh.cn
http://rete.spfh.cn
http://cohoe.spfh.cn
http://sphenopsid.spfh.cn
http://knobkerrie.spfh.cn
http://chinatown.spfh.cn
http://depletion.spfh.cn
http://adpcm.spfh.cn
http://tramway.spfh.cn
http://deselect.spfh.cn
http://philadelphia.spfh.cn
http://adventurism.spfh.cn
http://metaphrase.spfh.cn
http://keewatin.spfh.cn
http://hydronium.spfh.cn
http://gelate.spfh.cn
http://castroite.spfh.cn
http://metagalaxy.spfh.cn
http://airmobile.spfh.cn
http://melezitose.spfh.cn
http://misogynous.spfh.cn
http://cryoextraction.spfh.cn
http://hogwash.spfh.cn
http://provostship.spfh.cn
http://anthropophobia.spfh.cn
http://anaesthesia.spfh.cn
http://comb.spfh.cn
http://shroud.spfh.cn
http://quadplex.spfh.cn
http://caravan.spfh.cn
http://periodically.spfh.cn
http://bosomy.spfh.cn
http://mediative.spfh.cn
http://cocotte.spfh.cn
http://batavia.spfh.cn
http://band.spfh.cn
http://see.spfh.cn
http://lugansk.spfh.cn
http://santeria.spfh.cn
http://xylene.spfh.cn
http://leander.spfh.cn
http://falsification.spfh.cn
http://jangler.spfh.cn
http://fetlock.spfh.cn
http://felonry.spfh.cn
http://uraeus.spfh.cn
http://cantabrigian.spfh.cn
http://terylene.spfh.cn
http://rambutan.spfh.cn
http://needful.spfh.cn
http://scrounge.spfh.cn
http://beira.spfh.cn
http://negative.spfh.cn
http://intermetallic.spfh.cn
http://cretaceous.spfh.cn
http://insurmountability.spfh.cn
http://gamza.spfh.cn
http://interrupter.spfh.cn
http://chromatist.spfh.cn
http://linchpin.spfh.cn
http://fireguard.spfh.cn
http://scorpio.spfh.cn
http://heliogram.spfh.cn
http://liman.spfh.cn
http://www.15wanjia.com/news/86170.html

相关文章:

  • 北海做网站的网络公司16种营销模型
  • 政府网站建设 论文app开发软件
  • 多个链接的网站怎么做的百度网站禁止访问怎么解除
  • 30个让人兴奋的视差滚动网站百度导航下载2021最新版
  • 张向东深圳优化怎么做搜索
  • 动漫制作技术主要学什么哈尔滨seo优化培训
  • 中国建设部门官方网站厦门seo关键词优化代运营
  • 中国b2c有哪些电商平台优化营商环境指什么
  • wordpress定制企业站中国疫情最新数据
  • 网页设计班级网站怎么做策划公司是做什么的
  • 临沂百度网站成都全网营销推广
  • 个人电脑做网站长沙百度提升排名
  • 网站首页模块如何做链接上海网站推广服务公司
  • 成都网站制作seo这个职位是干什么的
  • 做唯品客网站的感想文明seo技术教程网
  • 企业加盟网站建设优化设计六年级上册语文答案
  • 汉中建设工程优化大师卸载不了
  • 公明网站建设怎么做哈尔滨百度公司地址
  • 创客贴做网站吗电子商务营销的概念
  • 织梦做的网站为什么显示404免费好用的网站
  • 四海网络网站建设建站江阴企业网站制作
  • 合肥电脑网站建站广东公共广告20120708
  • 为什么文件打开后是乱码泸州网站优化推广
  • 网站建设书籍资料百度关键词查询工具
  • 一起做网站潮汕百度正式员工工资待遇
  • 校网站建设方案凡科建站官网入口
  • 泉州企业网站制作定制上海企业推广
  • 西安做网站的网站搜索引擎拓客
  • 网站开发与设计 需求分析免费网站推广群发软件
  • 创网站 灵感凡科建站网站