main 함수 외부의 배열을 정의하여 메인 스레드뿐만 아니라 모든 스레드가 공유하도록하고 싶습니다. 사용자가 프로그램을 실행할 때 그의 인수는 배열의 크기 여야합니다. C에서 어떻게 이것을 할 수 있습니까?main 외부의 C에 배열을 정의하고 메인 내에 그 크기를 할당하십시오.
1
A
답변
3
실제 배열을 사용할 수 없습니다. 당신은 포인터로 작업을 수행 할 수 있습니다
int *p;
int main(int argc, char *argv[])
{
size_t x;
if (argc < 2)
return;
size_t x = strtoul(argv[1], NULL, 10);
p = malloc(x * sizeof *p);
return 0;
}
2
당신은 당신이 그것을 선언 배열의 길이를 알 수 없습니다 때문에 동적으로 할당 된 배열해야 할 것이다.
(많은 컴파일러는 [N]하는 int 수있는 확장 기능을 가지고 있지만,이 경우에만) (주에서 배열에 액세스하고 싶었 경우에도 해당 될 것이라고 주)int * myarray;
int myarray_count;
int main(int argc, const char * const * argv)
{
myarray_count = atoi(argv[1]);
myarray = malloc(myarray_count * (sizeof myarray[0]));
// ...
return 0;
}
이후에서 myArray '수 t 정적 배열이므로 sizeof myarray는 할당 된 배열의 크기를 반환하지 않으므로 배열의 개수와 함께 유지해야합니다.
+2
참고로, function scope의 int a [n];은 확장이 아닙니다. 그것은 "가변 길이 배열"이라고 불리우며 1999 년 이래로 C 표준에 없어서는 안될 부분입니다. –
0
int *a;
int a_c;
int main(int argc, char *argv[])
{
int i=0;
if (argc < 2)
return;
a_c= atoi(argv[1]);
a= malloc(a_c* (sizeof(int)));
// ...
for(i=0;i<a_c;i++)
{
printf("\n %d",a[i]);
}
return 0;
}
관련 문제
- 1. 메인 외부의 메서드에서 배열에 액세스 (
- 2. C : 문자열의 배열을 다시 할당하십시오.
- 3. 배열을 통해 정의하고 반복하기 TCL
- 4. C++ : 메인 외부의 함수에서 변수를 메인 내부의 함수 호출로 전달
- 5. 어떻게 배열을 정의하고 그들을 비교?
- 6. 다차원 배열을 함수 C에 전달
- 7. 내가 인터페이스를 정의하고 그 직접 사용하고 상황이
- 8. 값을 정의하고 배열을 통해 값을 호출하십시오.
- 9. 클래스 내에 이미 존재하는 numpy 배열을 정의합니다.
- 10. Main 메서드 내에 정적 변수를 선언하려면 어떻게해야합니까?
- 11. URLForUbiquityContainerIdentifier : 메인 스레드 외부의 스레드에서 호출해야합니까?
- 12. 배열을 비교하고 배열의 값에 따라 숫자를 할당하십시오.
- 13. 전역 변수를 정의하고 그 전역 변수를 초기화하는 것이 좋습니다.
- 14. 여기서 "main"함수에 대한 정보는 c에 저장되며 여기서 주 정의는?
- 15. C에
- 16. main() 함수 외부에서 생성 된 객체의 주소를 반환합니다.
- 17. 배열을 매개 변수로 사용하여 기본값으로 int main()
- 18. 범위/메뉴 외부의 배열을 참조하는 방법은 무엇입니까?
- 19. main 메서드 상속
- 20. Clojure에서 함수 내에서 함수를 정의하고 그 함수를 참조하려면 어떻게해야합니까?
- 21. C에
- 22. C에
- 23. 파이 게임 메인 루프 내에 트위스트 클라이언트가 있습니까?
- 24. Div의 아래쪽에 Div를 할당하십시오
- 25. 문자와 그 배열을 가진 미리 채우기 구조
- 26. QScrollArea 내에 동적으로 버튼 배열을 만들고 표시합니다.
- 27. PHP에서 객체 내에 객체 배열을 저장하려면 어떻게해야합니까?
- 28. iPhone : 정수 배열을 만들고 Obj-C에 값을 저장하는 방법?
- 29. 한 차원을 고정한 상태에서 C로 2 차원 배열을 할당하십시오.
- 30. cakephp의 조건부로 $ this-> paginate()에 빈 배열을 할당하십시오.
+1 멋진! 요소에 어떻게 액세스 할 수 있습니까? 'p [0] p [1] ... p [n]'과 같은가요? –
@ Eng.Fouad 그건 그렇고. 대부분의 경우 배열처럼 사용할 수 있습니다. 하지만 ** [배열이 아닙니다] (http://c-faq.com/aryptr/aryptr2.html) **를 기억하십시오. – cnicutar