-
**修改如下:
#include
#include
#include
using namespace std;
int main()
int **p;
int row,col,i,j;
cout<<"请输入行数和列数以创建矩阵";
cin>>row>>col;
cout<<"row is:"<
主要存在两个问题:
1.列和行有点混乱;
2.Malloc和自由搭配,新删搭配。
-
如果行有问题,请使用 delete 将其释放
修改后**,运行:
#include
#include
#include
using namespace std;
int main()
int **p;
int row,col,i,j;
cout<<"请输入行数和列数以创建矩阵";
cin>>row>>col;
cout<<"row is:"<
-
你仔细看看......
为什么有时 i 是行,有时 i 是 col,但 i 总是在第一个下标。
应用于 new 的内存是使用 delete 而不是释放来释放的
-
这段经文中有几个错误。
1.如果有 int a, int *b = &a,那么执行 free(b) 肯定会导致内存错误。
free 只能用于动态分配的内存,而不能用于堆栈或静态数据。
像 int a 或静态 int a 这样的变量由编译时已经确定的内存位置定义。
动态分配是在运行时从堆中临时分配内存块(使用 malloc 或 new)。 这些内存块需要使用 free(malloc) 或 delete(new) 释放;
2.变量名称实际上是内存地址的代码,这并不完全正确。
在程序中,变量名称表示“此地址上的值”,并且只能通过对变量使用 & 操作来获取变量的地址。
3.free(b) 应该释放指针变量 b。
如果指针变量存储动态获取的地址,则 free(b) 释放变量 b 的值(而不是变量 b 的地址),并且由于变量 b 的值是动态分配的地址,因此 free 释放动态地址。
二维数组实际上是数组的数组,因此指向二维数组的指针是指向数组的指针。 考虑到这一点,选择返回类型很简单。 >>>More
这显然是一个二维数组,二维数组可以看作是一维数组,for(i = 0; ifor(j = 0; j < n; j++)printf("%d",a[i][j) >>>More
如果你想系统地学习,可以考虑报名参加在线直播课程,并推荐CGWANG的在线课程。 老师讲得很细心,下课后可以回看,还有同类型的录课可以免费学习(赠送终身VIP)。 >>>More
在随后的长度中无法获得这种动态分配。
楼下列出的公式是用于计算数组的,这与您动态分配的指针不是一回事),但知道长度也相对简单。因为当你是新手时,你必须先知道长度。 这里已知的 w 和 h 是您想要的长度。 >>>More