【发布时间】:2015-10-08 16:24:00
【问题描述】:
#include <iostream>
void intswap ( int * pa, int * pb )
{
int temp = *pa;
*pa = *pb;
*pb = temp;
}
void reverse ( int * arr, size_t n )
{
int * end = arr + n;
while (arr != end && arr != --end) intswap(arr++,end);
}
int main ( )
{
int myArray [] = {1, 69, 0, -123, 1377};
size_t n = sizeof(myArray)/sizeof(int);
reverse(myArray, sizeof(myArray, n));
for ( size_t i = 0; i < n; ++i ) std::cout << myArray[i] << " ";
return 0;
}
生产
-123 0 69 1 1377
我做错了什么?毕竟,它与这里看到的算法相同:http://www.cplusplus.com/reference/algorithm/reverse/
【问题讨论】:
-
sizeof(myArray, n)??? -
sizeof(myArray, n)这是 C++ 吗?它不会在 C 中编译。 -
哈哈哎呀。类型-o。
-
听起来您可能需要学习如何使用调试器来单步调试您的代码。使用好的调试器,您可以逐行执行您的程序,并查看它与您期望的偏差在哪里。如果您要进行任何编程,这是必不可少的工具。进一步阅读:How to debug small programs
-
sizeof 是一个运算符,
,也是一个运算符,所以sizeof(a, b)等于sizeof(b)所以sizeof(size_t)在你的例子中(4 个字节可能)