저는 C 프로그램을 가지고 있습니다 만, 그만큼 간단하지만 지적으로 포인터를 사용하는 것은 상당히 나쁩니다. 아무도 내가 이걸 도와 주면 정말 고마워. 그것은 두 가지 기능을가집니다. 첫 번째 함수는 10 개의 정수 1-10이있는 배열을 만듭니다. 두 번째 함수는 해당 배열을 출력합니다. 감사합니다, 나는 현재 얻을C 인쇄 1-10, 무언가가 잘못되었습니다
#include<stdio.h>
//function to create array of 10 ints
int* myArray(void)
{
int array[10], i;
for(i = 0; i < 10; ++i)
{
array[i] = i + 1;
}
return array;
}
//function to printout the array of 10 ints
void printArray(void)
{
int *array = myArray();
int i;
for(i = 0; i < 10; ++i)
{
printf("%d ", array[i]);
}
}
//my main
int main()
{
myArray();
printArray();
}
출력은 1 일 2 3,078,316 5 6 3,078,824 257,921,824 1,905,931,270 -2 꽤 롤 엉망이다.
이는 "포인터"자체와는 아무런 관련이 없습니다. 아래 cegfault의 응답을보십시오. 문제는 "int array [10]"을 * local * 변수로 정의하고 범위를 종료 할 때 지역 변수 *가 더 이상 존재하지 않는다는 것입니다. "malloc()"(힙에서 변수를 할당하는 대신 스택에서 로컬로 할당하는 것)은이 문제를 피하는 하나의 방법입니다. – paulsm4