C 语言指针的指针和二维数组的区别?

 我来答
文帝宝宝6f977f4
高粉答主

2016-05-06 · 关注我不会让你失望
知道大有可为答主
回答量:1.9万
采纳率:92%
帮助的人:2825万
展开全部
指针的指针和二维数组完全俩东西,二维数组是 一维数组的一维数组,元素是数组,所以可以隐式转化为int (*)[3],跟int **两回事,扩展到更多维或其它类型也是成立的,只能隐式转化为第一维的元素的指针

补充说明下隐式转化为指针,简单说就是这样(T是任意类型)
设有一个数组T a[10];
a的类型是“T [10]”,在做大多数运算的时候,都先隐式转化为“T *”类型,即T的指针
对于多维数组,可以看做是一个一维数组,数组的元素类型就是第二维开始的数组类型,比如:
T a[10][20][30];
是一个有10个类型为“T [20][30]”元素的数组,用代码解释更清晰:
typedef T U[20][30];
U a[10];
跟上面的定义等价,所以a只能隐式转化为“U *”,“U *”展开后也就是“T (*)[20][30]”这个类型了,跟多级指针没关系,因此,多维数组不存在到多级指针的转化规则,强转只会导致问题
育知同创教育
2016-05-09 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
  二维数组由若干个一维数组组成在C语言中定义的二维数组实际上是一个一维数组,这个一维数组的每一个成员又是一个一维数组。
  当变量作为函数的参数时,函数内修改的是形参,实参不变化;(swap(int a, int b))
  当指针作为函数的参数时,函数内:若修改指针变量,实参指针指向变量不变。若修改指针指向,实参指针指向的变量变化。(swap(int *a, int *b))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式