新手求解答

open_mind_guan 2019-05-14 09:30:20
void noName(int arr[], int len)
{
if(len <= 1) return;
int i = 0;
while(arr[i] <= 6 && i != len)
{
i++;
}
noName(arr + i, len - i);
}

int main(void)
{
int a[] = {1, 2, 3, 4, 5, 6};
noName(a, 6);
return 0;
}
想表达的是,在一个函数调用时,代入的第一个参数是指针,这个指针指的是一个数组中的某个数,
如果数组为a[5],调用是需要用到a[6],但没有读取a[6]的值,有没有问题?这样以后会出现错误吗?
...全文
92 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
CaptainXue 2019-05-15
  • 打赏
  • 举报
回复
既然 a 是指针的, a+x 还是指针,这个加操作是可以的。因为这个操作没真正读写指针的值。
open_mind_guan 2019-05-15
  • 打赏
  • 举报
回复
说错了,不是a+1是那个arr+1。仅仅用了这个指针一下,不会深入使用,但这个指针实在数组外的。
open_mind_guan 2019-05-15
  • 打赏
  • 举报
回复
感谢感谢回答这个问题
open_mind_guan 2019-05-15
  • 打赏
  • 举报
回复
感谢提醒,这一步欠考虑了,主要你看看那个a+i以后会不会出现问题?有问题
Engureggg 2019-05-14
  • 打赏
  • 举报
回复
整型数组a[5]初始化时编译器分配5*4个字节,这些内存呈线性排列,系统没有分配给第六个数据空间,但访问第六个元素时,编译器可以通过,此时指针指向已定义的变量(访问其数据)或无指向(乱码)
Italink 2019-05-14
  • 打赏
  • 举报
回复
a[6] 用了[]就已经读取了,你把while的两个条件换一下位置,就没问题了,因为当i==len就结束判断,就不会指向后面的arr[i]<=6

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧