정수 배열은 여기에 정렬되어 있지만 문제가 있습니다 : 프로그램을 실행할 때마다 때때로 "변수 '숫자'의 스택이 손상되었습니다"라는 메시지가 나타나고 때로는 숫자 8을 반복해서 인쇄합니다. 여기 있습니다 (2010 Visual C++에서 컴파일) 내 코드 :이 코드가 내 배열을 인쇄하지 않는 이유는 무엇입니까?
즉시 나를 밖으로 점프#include <iostream>
#include <cstdlib>
using std::cout;
using std::endl;
void swap(int *x, int *y)
{
int tmp=0;
tmp = *x;
*x = *y;
*y = tmp;
tmp = 0;
}
int main()
{
int numbers[13] = {8,16,23,487,2,301,48,0,13,10,644,12};
int size = sizeof(numbers)/sizeof(int);
//sort
int i = 0;
int* a = &numbers[0];
int* b = &numbers[1];
while(i < size){
if(*a > *b){
swap(a, b);
}
*a++;
*b++;
i++;
}
//Print our results
int loopIterator = 0;
int numToPrint = 0;
while(loopIterator < size){
cout << numbers[numToPrint] << endl;
loopIterator++;
}
system("PAUSE");
}
을 주님 께서 말씀 : 여기에 STL을 사용하여 원하는 결과를 달성하기 위해 하나의 방법하여야한다 정수는 항상 4 ... * 한숨 *를 사용는 sizeof (int)를. –
'int size = sizeof (numbers)/sizeof (int);' – KevinDTimm
위의 해결 방법 모두 차선책입니다. 더 나은 :'size_t size = sizeof numbers/sizeof numbers [0];' –