1
배열 x에서 해당 참조를 사용하여 배열 a 또는 b의 요소를 계산하려고합니다.다른 배열의 포인터를 통해 배열의 요소를 계산하십시오.
int a[]={1,2,3,4,5};
int b[]={0,2,4,5};
int* x[]={a,b};
//These work as expected
int count_elements_a= sizeof(a)/sizeof(int); // returns 5
int count_elements_b= sizeof(b)/sizeof(int); // returns 4
int count_elements_x= sizeof(*x)/sizeof(int); // returns 2
내가 아무 문제 X를 통해 배열 A의 최종 위치의 값을 얻을 수 있습니다 : 지금까지 내가 무엇을 가지고
int a2 = x[0][2]; // returns 3
을하지만 지금, 나는의 요소를 계산하려면, X를 통해 그것을 알아낼 수 없습니다
//Count elements of a, via x. Should return 5.
int count_elements_ax= sizeof(*x[0])/sizeof(int); // returns 1
int count_elements_ax1= sizeof(x[0])/sizeof(int); // returns 2
왜이 모든 것을 통과해야합니까? 예를 들어,'std :: vector'를 사용할 수없고'.size()'를 사용할 수 있습니까? – CoryKramer
간단히 말해서, 당신은 할 수 없습니다. 이 정보는'a'와'b'가'x'의 초기화 과정에서 포인터로 붕괴 될 때 잃어 버리게됩니다. – BoBTFish
생각해보십시오. 'x [0]'의 타입은 무엇입니까? 'int *'입니다. 'sizeof (int *)'는 주어진 프로그램에 대해서만 하나 일 수있다. – juanchopanza