C++指向数组和 for 循环的指针;
C++ pointer to array and for loop;
我对C++很陌生,对这段代码有点问题。我想在应该使用动态内存分配创建的数组的每个单元格中放置 1。我相信几个月前我用 malloc 在 c 中做了类似的事情。当我打印出结果(g++ Linux)时,它显示只有第一列(当我们将数组的每十分之一视为新列的开头时)充满了一列。其他的则作为记忆的地址印刷。
#include "stdafx.h"
#include <iostream>
class TestOfForVector {
public:
double* tabX;
double* tabY;
int n;
TestOfForVector(int getN){
n = getN;
tabY = new double[n*n];
//tabX = new double[n];
for(int i = 0; i < n; i ++ ){
for(int j = 0; j <n; j++){
tabY[j+i*n] = 1.0;
std::cout<<tabY[j+i*n]<<std::endl;
}
}
}
~TestOfForVector(){
delete [] tabX;
delete [] tabY;
}
};
int main(int argc, _TCHAR* argv[])
{
TestOfForVector newboy(10); //it will be defined by user input;
return 0;
}
很抱歉可能是微不足道的问题,但我在互联网上找不到答案。此致敬意卢卡斯!
您的代码是正确的,并且(在您注释掉创建代码后注释掉您的delete[] tabX
后)它在我的机器上运行并生成一列。
我不知道stdafx.h
标题应该是什么 - main
的正常签名是(int argc, char** argv)
.所以我在使用 g++
编译之前删除了该标头。你说你在Linux上,所以使用Visual Studio的东西看起来很奇怪,不是吗?
您在析构函数中遇到了未定义的行为:
delete [] tabX;
因为指针tabX
悬而未决,因为它没有初始化。
除此之外,你的代码很好,尽管stdafx.h
是在Win下使用的预编译头文件,_TCHAR
是MSVS定义的宽字符,你说你是在Linux下编译的。
相关文章:
- 用于C++中带有数组和指针的循环
- C++指针在 for 循环中被覆盖
- C++ - 循环访问指针数组会导致错误
- 为什么循环会导致指针出现问题?
- 如何循环访问 cpp 中的函数返回的字符指针数组
- foor 循环的最后一次迭代中的指针更改
- 在 for 循环中定义的临时数组,并分配给属于指针数组的指针
- foreach循环中指针到std::unique_ptr的隐式转换
- 在循环(C++)中用新指针填充映射
- 使用基于范围的指针循环和向量时出现C++错误
- 使用基于范围的for循环取消对矢量指针的引用
- 在指针迭代中使用for循环时出现分段错误
- 用基于范围的for循环填充指针向量
- 指针上的 For 循环:它会移动整个地址范围吗?
- 在循环迭代期间将引用保存到矢量中的空指针
- For 循环使用指针遍历数组无法正常工作
- 带有指针的嵌套 foreach 循环?
- 循环和内存管理中的指针算术C++?
- 对于循环不循环和检测字符数组 [指针和字符数组]
- 构造函数中的循环指针注入