C 语言指针的指针和二维数组的区别?
展开全部
指针的指针和二维数组完全俩东西,二维数组是 一维数组的一维数组,元素是数组,所以可以隐式转化为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]”这个类型了,跟多级指针没关系,因此,多维数组不存在到多级指针的转化规则,强转只会导致问题
补充说明下隐式转化为指针,简单说就是这样(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))
当变量作为函数的参数时,函数内修改的是形参,实参不变化;(swap(int a, int b))
当指针作为函数的参数时,函数内:若修改指针变量,实参指针指向变量不变。若修改指针指向,实参指针指向的变量变化。(swap(int *a, int *b))
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询