社区
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[]等价?
...全文
58
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[] 都是一个一维数组,所以不需要标的,系统都知道如何访问。
数组
中的碰撞
指针
与滑动
数组
问题
本文介绍了碰撞
指针
(双向
指针
)在
数组
问题
中的应用,如在LeetCode167题中寻找两数之和。碰撞
指针
通过两个
指针
从
数组
两端向中间遍历,适用于验证回文串等场景。同时,讲解了滑动窗口的概念,以LeetCode209题为例,展示了如何通过调整两个
指针
来找到满足条件的最小子
数组
。滑动窗口在处理连续子
数组
问题
时非常有效,如查找最长无重复字符子串等。
浅谈c/c++面试中的
指针
数组
越界-野
指针
空
指针
-
指针
数组
数组
指针
问题
本文详细解析了
指针
的概念,包括
指针
的定义、易混淆
问题
,如
指针
运算和
数组
越界。接着介绍了野
指针
和空
指针
的差异,强调了野
指针
的潜在风险以及空
指针
的安全性。此外,还区分了
指针
数组
和
数组
指针
的使用和特点。通过实例展示了
数组
越界导致的死循环
问题
,提醒开发者注意
指针
操作的边界安全。
双
指针
解决
数组
问题
本文详细介绍了双
指针
算法中的快慢
指针
和左右
指针
的概念,并通过LeetCode上的合并两个有序
数组
问题
来具体说明其应用场景及实现方式。
指针
与
数组
步长
问题
探究
本文深入探讨了
指针
与
数组
步长的概念,解析了一维与二维
数组
、一级与二级
指针
的步长
问题
,通过实例代码展示了不同类型的
指针
和
数组
在内存中的表现,帮助读者理解
指针
与
数组
的内在联系。
浅谈
指针
能力
问题
及
指针
与
数组
的关系
本文深入探讨了C语言中
指针
的基本概念,包括
指针
的能力
问题
、
指针
间赋值的规则、二级
指针
的概念以及
指针
与
数组
的关系。通过具体的代码示例,解释了不同类型的
指针
如何相互作用,并讨论了
指针
类型强转和
指针
能力的收缩与扩展。此外,还介绍了
数组
首元素地址与
数组
地址的区别,以及二级
指针
在操作
数组
时的运用。
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章