社区
C语言
帖子详情
关于数组与指针的小问题
lutong
2003-07-09 11:31:31
void f(int (*p)[])
{
}
int a[][2] = {2,3,4,5};
f(a);
我的问题是:
(1) 形参指针指向的类型为int [], 实参指针指向的类型为int [2], 为什么不相容? 类型相容到底有什么要求?
(2)为什么extern int a[10] 和 extern int a[]等价?
...全文
15
5
打赏
收藏
关于数组与指针的小问题
void f(int (*p)[]) { } int a[][2] = {2,3,4,5}; f(a); 我的问题是: (1) 形参指针指向的类型为int [], 实参指针指向的类型为int [2], 为什么不相容? 类型相容到底有什么要求? (2)为什么extern int a[10] 和 extern int a[]等价?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lutong
2003-07-10
打赏
举报
回复
是不是可以这样理解:
对于一个定义
void f(int (*p)[])
{
}
而言,编译没有问题,说明符合语法要求。
但是,int a[][2] = {2,3,4,5};
f(a); 此时编译器对实参和形参进行匹配,
首先将实参转换为int (*a)[2],即指向两个整数的
数组的指针,由于形参对应于一个二维数组,
其第二维和实参不匹配,所以形参指针也就和
实参类型不相容,导致编译错误。
结论是,函数必须定义为:
void f(int (*p)[2] )
{
}
hex
2003-07-10
打赏
举报
回复
好像不是这样的。
还是gzlucky(Lucky)说得对,你的声明错了。
此外还可以给你几个例子:
int a[3][4];
int **p1;
int *p2[4];
int (*p3)[3];
p1=a;//ok
p2=a;//ok
p3=a;//ok
可以用二重指针完成你的函数。
pengzhenwanli
2003-07-10
打赏
举报
回复
(2)为什么extern int a[10] 和 extern int a[]等价?
因为extern int a[]只是一个声明,要到联接的时候才找定义,
只要编译器知道就行了。
型别相容
比如说指针和数组,
idontlikenickname
2003-07-10
打赏
举报
回复
void f(int (*p)[]) // 接收的参数是一个数组指针,该指针指向一个含有两个整型元素的数组.
{
}
int a[][2] = {2,3,4,5};
// 应该这样调用.
f(&a[0]);
f(&a[1]);
或者
f(a + 0);
f(a + 1);
gzlucky
2003-07-09
打赏
举报
回复
你应该定义为:
void f(int (*p)[2] )
{
}
这是一个多维数组,如果你不定义除第一维外的其他维数的下标值,系统是不和道如何访问这个多维数组的。
int a[10] 和 int a[] 都是一个一维数组,所以不需要标的,系统都知道如何访问。
指针
数组
与
数组
指针
详解
指针
数组
与
数组
指针
详解1.什么是
指针
数组
和
数组
指针
?
指针
数组
:
指针
数组
可以说成是”
指针
的
数组
”,首先这个变量是一个
数组
,其次,”
指针
”修饰这个
数组
,意思是说这个
数组
的所有元素都是
指针
类型,在32位系统中...
数组
指针
和
指针
数组
首先,理解一下
数组
指针
和
指针
数组
这两个名词: “
数组
指针
”和“
指针
数组
”,只要在名词中间加上“的”字,就知道中心了——
数组
的
指针
:是一个
指针
,什么样的
指针
呢?指向
数组
的
指针
。
指针
的
数组
:是一个
数组
...
关于
指针
数组
与
数组
指针
详解(知识点全面)
2.
数组
指针
2.它们的区别 1.
指针
数组
如果一个
数组
中的所有元素保存的都是
指针
,那么我们就称它为
指针
数组
。其一般形式为: 数据类型 *
数组
名[常量表达式][常量表达式]...... ; 它是一个
数组
,
数组
的元素都...
指针
数组
与
数组
指针
的区别
b、
数组
指针
:是指一个指向
数组
的
指针
,它其实还是一个
指针
,只不过是指向
数组
而已; 定义形式:int (*p)[10]; 其中,由于[]的优先级高于*,所以必须添加(*p). 区分方法: 主要看后面的两个字是什么(前面是修饰作用...
数组
和
指针
的区别与联系(详细)
2.存储方式、初始化(
指针
数组
、
数组
指针
)、存储内容(求sizeof) 3.赋值 6.传参(函数
指针
、函数
指针
数组
、函数
指针
数组
的
指针
、野
指针
) 一、概念
数组
:
数组
是用于储存多个相同类型数据的集合。
指针
:
指针
...
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章