国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

java - c++ 數(shù)據(jù)結(jié)構(gòu)這個錯在哪了,動態(tài)存儲?

瀏覽:82日期:2024-01-06 14:06:18

問題描述

找了半天了,麻煩幫我看下。

///////////頭文件#ifndef POSTMASTER_H_INCLUDED#define POSTMASTER_H_INCLUDED#include<iostream>#include <stdio.h>#include <tchar.h>using namespace std;class Matrix{ int rows, columns; int **element; void init(int rows, int columns);public:Matrix(int rows, int columns,int x); ~Matrix(); friend ostream& operator<<(ostream& out, Matrix&); };#endif // POSTMASTER_H_INCLUDED////////////////////.cpp#include 'wine.h'void Matrix::init(int rows, int columns){ element = new int*[rows]; this->rows = rows; this->columns = columns; for (int i = 0;i < columns;i++) {element[i] = new int[columns]; }}Matrix::Matrix(int rows, int columns, int x){ this->init(rows, columns); cout << '1'; for (int i = 0;i < rows;i++)for (int j = 0;j < columns;j++) { element[i][j]=x; ///這里貌似出錯了?}}Matrix::~Matrix(){ for (int i = 0;i < rows;i++) {delete element[i]; //delete[] element[i]; ? } delete element;}ostream& operator<<(ostream& os, Matrix&a){ os<< '矩陣(' << a.rows << ',' << a.columns << '):' << endl; for (int i = 0;i < a.rows;i++) {os<< endl;for (int j = 0;j < a.columns;j++) os << a.element[i][j]<<' '; } return os;}//////////////////main()#include 'wine.h'#include 'wine.cpp'#include<iostream>#include<cstdlib>using namespace std;int main(){ int b[3][2] = { 1,2,3,4,5,6 }; Matrix a(3,2,4); cout << a; system('PAUSE'); return 0;}

問題解答

回答1:

錯誤的關(guān)鍵在這一行:

element[i][j] = x;

這種尋址的使用方式會嘗試訪問element(首地址)+i*sizeof(int*)+j*sizeof(int)。最好還是乖乖地使用:

int* row = element[i];row[j] = x;

比較穩(wěn)妥一些,也不怕不同的編譯器有不同的解釋方法。

回答2:

for (int i = 0;i < columns;i++)改為for (int i = 0;i < rows;i++)

標簽: java
主站蜘蛛池模板: 正阳县| 临沧市| 凤庆县| 阿拉善右旗| 栖霞市| 隆尧县| 栖霞市| 静乐县| 怀化市| 内乡县| 同心县| 大邑县| 革吉县| 佳木斯市| 镇平县| 广德县| 芜湖县| 尉氏县| 新泰市| 永州市| 莒南县| 包头市| 湟源县| 武清区| 乌拉特后旗| 松阳县| 涿州市| 竹山县| 盈江县| 泰来县| 谷城县| 开远市| 龙胜| 阿城市| 镇远县| 灌阳县| 铜川市| 玛纳斯县| 任丘市| 涿州市| 弥渡县|