循环后变量值突然发生变化
Variable changed value suddenly after Loop
矩阵nablist
有问题。当我第一次打印nablist
时,nablist
是绝对正确的,但当我再次打印时,值完全错误。我认为问题是一致的:
nablist[i,nnab[i]]=j
因为我试着把一个指针作为索引。知道吗?
我有以下代码:
#include <stdio.h>
#include <windows.h>
int main(int argc, char **argv)
int n=902;
int i,j;
int* nnab=new int[nmax];
int* nablist=new int[nmax,6];
for (i=0;i<n;i++)
{
nnab[i]=0;
for (j=0;j<6;j++)
{
nablist[i,j]=0;
}
}
for (i=0;i<n-1;i++)
{
for (j=i+1;j<n;j++)
{
nnab[i]=nnab[i]+1;
nablist[i,nnab[i]]=j;
cout<<nablist[i,nnab[i]]<<endl; //first print
}
}
for (i=0;i<n-1;i++)
{
cout<<nablist[i,nnab[i]]<<endl; //second print
}
}
谢谢你的回答。是的,问题是我需要使用多对方括号。我尝试使用int (*ptr)[5] = new int[5][10];
,但出现了一个错误。我想定义一个有n行m列的二维数组。我想使用一个文本文件来读取n,m变量,以便定义2D数组。。我该怎么做?你明白我的意思吗?感谢
尝试修复以下警告:
% g++ test.cpp -Wall
test.cpp: In function ‘int main(int, char**)’:
test.cpp:13:27: warning: left operand of comma operator has no effect [-Wunused-value]
int* nablist=new int[nmax,6];
^
test.cpp:21:17: warning: left operand of comma operator has no effect [-Wunused-value]
nablist[i,j]=0;
^
test.cpp:30:24: warning: left operand of comma operator has no effect [-Wunused-value]
nablist[i,nnab[i]]=j;
^
test.cpp:31:30: warning: left operand of comma operator has no effect [-Wunused-value]
cout<<nablist[i,nnab[i]]<<endl; //first print
^
test.cpp:37:28: warning: left operand of comma operator has no effect [-Wunused-value]
cout<<nablist[i,nnab[i]]<<endl; //second print
您应该阅读有关逗号运算符的文档。维基百科说:
在C和C++编程语言中,逗号运算符(由令牌表示,)是一个二进制运算符,用于计算第一个操作数并丢弃结果,然后计算第二个操作数操作数,并返回此值(和类型)。
并在网上搜索如何用C/C++做二维数组。
我想我知道问题出在哪里了。当你想要制作2D阵列时,你需要使用多对方括号:int arr[10][10];
当您想访问数组中的对象时也是如此:arr[2][3] = 0;
您必须这样使用new
: int (*ptr)[5] = new int[5][10];
int (*ptr)[10] = new int[5][10];
如果是3D阵列,它将是 int (*ptr)[7][8] = new int[7][8][9];
int (*ptr)[8][9] = new int[7][8][9];
最后一件事:当你不再需要new
创建的数组时,不要忘记删除它们:
int *p = new int[1000];
// ...
delete [] p;
相关文章:
- C++取消引用指针.为什么会发生变化
- 为什么在读取文件大小时文件IO速度会发生变化
- MPI突然停止了对多个核心的操作
- 为什么cudaMemGetInfo报告设备内存总量的变化
- 如何避免LED在循环状态变化中闪烁?
- 当 I2C 值在C++中发生变化时收到通知
- Gtkmm 会不断检查 Gtk::日历上的所选日期是否发生变化
- 当我调用对象的方法时,对象的成员会发生变化
- 为什么向量内部的指针在从函数返回时会发生变化?
- 如何在 c++ 中循环中使用频率变化的声音?
- 为什么 C++ 中的零会发生变化
- 为什么我的全局变量似乎没有变化?
- 使用 IMFSinkWriter 编码的视频的播放速度会根据宽度而变化
- C++11:具有互斥锁的线程看到原子变量的值发生变化,尽管这是唯一可以改变它的代码
- 为什么预减量会导致奇怪的变化?
- MATLAB:跟踪imufilter对象中的状态变化
- 调用函数时,变量突然无缘无故地更改
- 当父小部件大小发生变化时,如何更改子小部件的大小?
- 我正在将一个 std::string 传递给一个 boost 函数,该函数对该类型进行常量引用,但该值发生了变化
- 循环后变量值突然发生变化