For循环不起作用
C++ - For loop not working
我正在制作的资本主义模拟器的for循环(用于调试)不起作用,因为它在ix=0处退出(它只执行循环体一次)。我也相信它在语法上是正确的(从其他问题)。
下面是我的代码(我省略了变量):void print_things(String2Double b, String2Double up_cost, String2Double tFinish, string* bNames) {
// Just for debugging!
for (int ix=0;ix<(sizeof(bNames)/sizeof(bNames[0]));ix++) {
cout << "Count of business " << bNames[ix] << ": " << b[bNames[ix]] << endl;
cout << "Upgrade cost for " << bNames[ix] << ": " << up_cost[bNames[ix]] << endl;
cout << "Time to finish for " << bNames[ix] << ": " << tFinish[bNames[ix]] << endl;
cout << ix << endl;
}
}
我也让它打印bNames[]
的大小,它是9,它只打印ix=0,我怀疑一定是出了什么问题。
谢谢!
这里的bNames
是指针,而不是数组。
表达式
(sizeof(bNames)/sizeof(bNames[0]))
不能正常工作
这部分可能是你在不理解的情况下复制的,因为它只对数组有效,对指针无效。在函数中将参数声明为bNames[]
也行不通。
使用指针时,需要显式传递元素个数。
c++中更好的方法是使用std::vector
(但强烈建议您首先了解它是如何工作的)。
如果您在编译时知道(不是数组)的大小,则只能在c++中传递数组引用,使用as语法:
void print_i10(int (&a)[10]) {
// `a` here is a reference to an array of 10 integers
}
也可以将数组传递给函数模板,让模板在编译时推断数组的大小;例如:
template<typename T, int N>
void print(const char *format, const T (&a)[N]) {
printf("[");
for (int i=0; i<N; i++) {
if (i) printf(", ");
printf(format, a[i]);
}
printf("]n");
}
int main(int argc, const char *argv[]) {
int ia[10] = {1,2,3,4,5,6,7,8,9,10};
const char *sa[] = {"this", "that", "hmmm..."};
print("%i", ia);
print("'%s'", sa);
return 0;
}
,但这意味着对于每个元素类型和元素大小,您将在程序中获得print
函数的不同副本(通常是坏主意)。
相关文章:
- 循环在计数器中不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 嵌套While循环不起作用(C++问题)
- 为什么在 while 循环中返回表达式不起作用
- (C++)虽然循环一次不起作用,但我引入了多个变量
- CAFFE转发网络在for循环中不起作用
- 为什么 std::chrono 在测量循环和编译器优化的并行 OpenMP 的执行时间时不起作用?
- 嵌套的循环现在不起作用
- 为什么当我对数组使用增量操作时,do for 循环不起作用
- 在矩阵逆变器上工作,由于某种原因,我的指数循环不起作用
- C++需要弄清楚为什么这个 for 循环不起作用
- 为什么我的 for 循环不起作用?
- For 和 while 循环在全局定义的函数中不起作用
- 虽然循环在分配字符'