不学网

 找回密码
 立即注册

只需一步,快速开始

手机号码,快捷登录

查看: 278|回复: 0

[c/c++] 有关数组的一些小坑

[复制链接]
Smalldy 发表于 2018-1-5 12:55:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
咱先上一段代码看看
  1. //无论你是否对数组取地址 得到的数值永远是是第一个元素的首地址
  2.     int a[] = {1,2,3};
  3.     int **p = (int**)&a;
  4.     printf("%d\n",*a);
  5.     printf("%p\n",*p);//*p在语法上仍然被视为int * 指针,但实际上 *p 已经是数组的第一个值
  6.     printf("%p\n",a);
  7.     printf("%p\n",p);
复制代码


看,*p 已经是数组的第一个值了,如果你再**p的话会怎么样?
会把数组的第一个数值当做地址去访问了,其结果十有八九就是程序崩溃!

从这个角度来看的的话:
指针的指针 != 数组的指针
自然
数组和指针 必然也不是相等的!


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|不学网

GMT+8, 2018-9-19 05:57

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表