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没有问题得到阵列的最终位置的值:
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