注册 登录
编程论坛 VC++/MFC

运行内存不可read错误

鱼游海底 发布于 2015-10-11 22:56, 2072 次点击
程序代码:
/*
此程序作用::::::::

把1,3,5,5,6,7(m=3,n=3)变为5,6,7,1,3,5、



*/

#include <iostream>

using namespace std;

void get(int*& a, int n) {
    for(int i = 0; i < n; ++i)
        cin >> a[i];
}
void Change(int *a, int n1, int *b, int n2, int* const & p) {
    for(int i = 0; i < n2; ++i)*(p + i) = b[i];
    for(int j = 0; j < n1; ++j)*(p + n2 + j) = a[j];
}
void print(int *a, int n) {
    for(int i = 0; i < n; ++i)
        cout << a[i] << " ";
}

int main() {
    int m, n;
    cout <<  "m:" ;
    cin >> m;
    cout << "n:";
    cin >> n;
    cout << "输入" << m + n << "个数:";
    int *p1 = new int[m + n];
    get(p1, m + n);
    int *p = NULL;
    Change(p1, m, p1 + m, n, p);
    cout << "after:" << endl;
    print(p, m + n);

}
4 回复
#2
yangfrancis2015-10-13 15:12
*(p + i) 用表达式写指针是非法的,况且实参p也是个空指针。我猜是这个原因
#3
鱼游海底2015-10-13 22:39
回复 2楼 yangfrancis
可以用指针写表达式吧!应该是P指向NULL的原因。
#4
yangfrancis2015-10-14 20:15
回复 3楼 鱼游海底
指针写表达式当然没问题,关键这里是用表达式写指针!
#5
农民工2015-10-15 08:36
你这个p 是输入 还是输出?
1