c++ - 交换指针数组(指向类的指针)元素
问题描述
我创建了一个指针数组,它表示名为 Sinif 的类对象。Sinfi *sinif = new Sinif[5]
正如我们所知,每个元素都有一个地址。在我的家庭作业中,例如,我想将 sinif 的第一个元素与第二个元素及其地址交换。在 Degistir 函数中它发生了变化,但只有最后一次写入运行良好。假设我们想将 Sinif 0 更改为 1,它将 0 更改为 1,但 1 保持原样。这是详细示例的照片。
在这里,第一个用户输入要移动的元素而不是移动的位置,程序在找到它时在每个 Sinif Array 中查找它。地址被收集到 temp 和 temp2 之后它分配它。
Sinif *temp;
Sinif *temp2;
void Yonetim::SinifDegistir() {
char DegisecekSinif;
char YeniYeri;
cout << "Degisecek Sinif Adi: "; cin >> DegisecekSinif;
cout << "Yeni Sinif Yerinin Adi: "; cin >> YeniYeri;
for (int i = 0; i < okul->SayacGet(); i++)
{
if (DegisecekSinif == okul->sinif[i].sinif) {
temp = okul->sinif + i;
for (int j = 0; j < okul->SayacGet(); j++)
{
if (YeniYeri == okul->sinif[j].sinif) {
temp2 = okul->sinif + j;
Degis(i, j);
}
}
}
}
}
void Yonetim::Degis(int i, int j) {
(okul->sinif[i]) = *temp2;
(okul->sinif[j]) = *temp;
TabloYazdirma();
}
解决方案
Sinfi *sinif = new Sinif[5]
在内存中创建一个包含 5 个 Sinif 实例的数组。不是指针,而是实际实例。
所以当你后来说:
(okul->sinif[i]) = *temp2;
您所做的是将 sinif 的内容从一个复制到另一个。现在两者都是一样的。所以下一行
(okul->sinif[j]) = *temp;
什么也没做。*temp
已经被覆盖,*temp2
您只是将其复制回来。
推荐阅读
- if-statement - 嵌套 If 语句 SSRS 表达式
- excel - 执行这个宏需要很长时间,可以做些什么来加快它的速度?
- c# - C# / .NET 保持命名管道打开并支持任意数量的并行连接客户端
- javascript - 重定向到函数 React Router Dom 中的路由
- python - celery 上的 python 工作者 (crawler + save db) 的最佳设置
- r - 如何使用 geom_text() 标记 geom_bar(position = 'fill')
- python - 平滑拟合函数
- python - 如何在python中将二维数组添加到数据库中
- wpf - 如何在 XAML 的绑定中使用 StringFormat
- python - 使用列表读取 pandas 中的列以创建新的分类列