| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2075 人关注过本帖
标题:运行内存不可read错误
只看楼主 加入收藏
鱼游海底
Rank: 1
来 自:中国
等 级:新手上路
帖 子:132
专家分:2
注 册:2015-4-16
结帖率:57.14%
收藏
 问题点数:0 回复次数:4 
运行内存不可read错误
程序代码:
/*
此程序作用::::::::

把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);

}
2015-10-11 22:56
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
*(p + i) 用表达式写指针是非法的,况且实参p也是个空指针。我猜是这个原因
2015-10-13 15:12
鱼游海底
Rank: 1
来 自:中国
等 级:新手上路
帖 子:132
专家分:2
注 册:2015-4-16
收藏
得分:0 
回复 2楼 yangfrancis
可以用指针写表达式吧!应该是P指向NULL的原因。
2015-10-13 22:39
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
回复 3楼 鱼游海底
指针写表达式当然没问题,关键这里是用表达式写指针!
2015-10-14 20:15
农民工
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:109
专家分:639
注 册:2015-8-22
收藏
得分:0 
你这个p 是输入 还是输出?
2015-10-15 08:36
快速回复:运行内存不可read错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022369 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved