2014-04-24 3 views
1

은 내가 간단한 탭이 :읽기 열

int rows = atoi(argv[1]); 
int tab[rows][2]; 

그리고 난에 의해 FUNC에 전달 해요 : I 행의 수를 읽을 수있는 방법을

myFunc(tab); 
void myFunc(int (*tab)[2]); 

? 아직 시도해보아야 할 사항 :

int readRowInMyFunc = sizeof(tab)/(sizeof(int **)); 

하지만 작동하지 않습니다.

+0

배열 유형은 단순히 포인터입니다. 인수가 특정 크기의 배열 인 함수 (myFunc)를 선언 할 수 없습니다. 배열의 머리 수에 대한 포인터를 myFunc에 전달하고 배열의 행 수 (2 개의 인수)'void myFunc (int * tab, int rows) ' –

+0

Ok! 고마워요. – cniak

답변

1
sizeof(tab) = rows * 2 * sizeof(int) 

그렇게

rows = sizeof(tab)/(2*sizeof(int)) 

참고이 동적 크기의 스택에 배열을 만들 수있는 정말 좋은 생각입니다. argv [1] = 100000000000000000000으로 프로그램을 실행하면 어떻게 될까요?

+0

고마워, 내 학습을 위해서만 :-) – cniak