#include<stdio.h>
#include<conio.h>
unsigned * bin(unsigned n) {
unsigned a[16];
int i = 0, j = 0;
for (i = 0; i < 16; i++) {
a[i] = n & 0x1;
n = n >> 1;
}
return a;
}
void main() {
unsigned n = 5;
int i = 0;
unsigned * a = bin(n);
for (i = 15; i >= 0; i--) {
printf("%d\n", (*(a + i)));
}
getch();
}
이 이진 변환이 작동하지 않도록 도와주세요. 이진 회심을 사용하여 x^n
을 계산하려고합니다. 수 anybode 도움 ??이 이진 변환이 작동하지 않는 이유는 무엇입니까?
'a'는 자동 저장 기간을 가지며'bin'의 끝까지 살아남지 않습니다. 매달려있는 포인터를 돌려주고 있습니다. 당신은'malloc' (또는'new' up) 배열을 반환하고 호출자에서 free (또는'delete []')를 원할 것입니다. 아니면, C++에서 대신'std :: vector'를 사용하면 평범한 메모리를 처리 할 수 있습니다. – cHao
먼저 (여기서 게시하기 전에)해야 할 일은 아마도 컴파일러 경고를 읽는 것입니다. 일반적으로 컴파일러는 지역 변수를 반환하는 문제를 파악합니다. –
''은 이식 할 수있을뿐만 아니라 그것을 지원하는 몇몇 시스템에서는 더 이상 사용되지 않을 것이며,'main'은 리턴 타입으로'int'를 요구합니다. –