处理数组时出错 C++
Error in Dealing with Arrays C++
我在下面的代码中收到一个段错误,任何建议将不胜感激
谢谢
/*
* File: newmain.cpp
* Author: user
*
* Created on 10 December, 2014, 7:18 AM
*/
#include <stdlib.h>
#include <iostream>
using namespace std;
int append(int a[], int b[], int m, int n);
int main() {
int a[] = {1, 2, 3, 4};
int b[] = {4, 5};
int m = sizeof (a);
int n = sizeof (b);
append(a, b, m, n);
return 0;
}
int append(int a[], int b[], int m, int n) {
int i = 0, j = 0;
while (i < m && j, n) {
if (a[i] < b[j]) {
cout << a[i++];
} else if (a[i] > b[j]) {
cout << b[j++];
} else {
cout << b[j++];
i++;
}
}
for(i=0;i<m;i++){
cout<<a[i];
}
for(j=0;j<n;j++){
cout<<b[j];
}
}
sizeof
返回类型的大小(以字节为单位(。 你有一个int
数组,所以元素的数量是sizeof a / sizeof(int)
,或者更好的是sizeof a / sizeof a[0]
。
您的下一个问题涉及逗号运算符。
>sizeof (a)
是数组中的字节数,而不是元素数。
您可以除以元素大小,sizeof(a) / sizeof(a[0])
.
或者你可以使用 std::extent<decltype(a)>::value
.
或者你可以写一个小函数来给出数组的大小:
template <typename T, size_t N> size_t array_size(T(&)[N]){return N;}
或者你可以让你的函数成为一个模板,将数组引用而不是指针作为其参数,并从这些数组中推断出大小:
template <size_t n, size_t m>
int append(int (&a)[n], int (&b)[m]) {
// your code here
}
循环条件中还有一个拼写错误:
while (i < m && j < n)
^ not ,
最后,您声明append
返回int
,但不返回任何内容。要么返回某些内容,要么将返回类型更改为 void
。
相关文章:
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 读取文件的最后一行并输入到链接列表时出错
- 重载操作程序时出错>>用于类中的字符串 memebr
- 调用专用模板时出错"no matching function for call to [...]"
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 在Google Kick start中提交时出错
- 在c++中访问int到类对象的映射时出错
- 分段错误当我试图运行程序时出错
- 使用dynamic_cast和构造函数时出错
- CHECK(调用)函数在Google Colab中出错
- 用pybind11包装C++抽象类时出错
- 为x86而非x64编译时出错
- 从R调用C++函数并对其进行集成时出错
- 这个函数哪里出错了
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 为重写std::exception的库生成swig接口时出错
- 导入/导出变量时出错
- PrintWindow函数在notepad.exe中出错