二维数组的数组名是什么(一维数组名,二维数组名有何区别)

本文目录
一维数组名,二维数组名有何区别
名称是我们定义的,所以没有什么区别。不过是定义的时候一维数组名有一个的地址。
或许还是没有解释清楚?
就这么说吧,一维数组:*a=a;
二维数组:
**a=*a
C语言二维数组名不懂
二维数组的数组名代表了一个指针,这个指针指向的是一维数组,不是另一个指针。
例如,
int a;
int (*p);
p = a; // 这里可直接赋值,而*p得到的是个一维数组
这里p 指向了 a的首地址
由于C里面,二维数组的数据在内存中是连续存放,我们在编程时会简单处理
int *p = (int*)a; // a所指的一维数组的首地址,也是整个二维数组的首地址
这样 p++ 可以逐个访问数组的int元素;
但我们很少这样做
int **p = (int**)a; // 因为这样没啥意义
C语言二维数组名的问题
二维数组名是指定长度的一维数组的指针(常量指针),而一维数组本身是个指针,所以一般叫指针的指针,但其实有差异的。
w的类型是 int (*)
*(*(w+1))等价于w,谁和你说不是?你如果怀疑自己做个测试不就完了。
w+1等价于&w 和w一样
*(w+1)等价于&w ,类型 int * ,注意 w+1和 *(w+1)地址是一样的但是类型不同
*(*(w+1))等价于w
*(w+1)就是在第二行地址,类型是int *,它是个整体,使用它当做一维数组读取必须加括号
正确的写法是:(*(w+1))
如果不加括号意义就不同了,*(w+1) 那就成了第二行第5个元素作为指针,但是实际上该元素是个整数,会造成非法地址访问。

更多文章:
数据库管理系统和数据库系统分别侧重(数据库,数据库管理系统,数据库系统,这三个分别是什么意思并举个实例)
2026年9月7日 17:00
springmvc的依赖(springMVC的注入方式有哪几种,这与springMVC依赖)
2026年9月7日 14:00
display flex 自动换行(overflow-y:hidden;overflow-x:auto;无效解决方法)
2026年9月7日 11:00
timestamp without time zone(Postgresql中to_date()函数使用问题)
2026年9月7日 09:40






