我是编程新手.此代码无法正常工作,即从二维数组中检索一维数组地址: #includestdio.hmain() { int s[4][2] = { { 1234, 56 }, { 1212, 33 }, { 1434, 80 }, { 1312, 78 } }; int i ; for ( i = 0 ; i = 3 ; i++ ) printf ( "
#include<stdio.h> main() { int s[4][2] = { { 1234, 56 }, { 1212, 33 }, { 1434, 80 }, { 1312, 78 } }; int i ; for ( i = 0 ; i <= 3 ; i++ ) printf ( "\nAddress of %d th 1-D array = %u", i, s[i] ) ; }为了更精确而不使用C函数,通过指向函数的指针(此处为printf())传递数组,可以在此处使用指向数组的指针:
for ( i = 0 ; i < 4 ; i++ ) { int (*ptr)[2] = &(s[i]); printf ( "\nAddress of %d th 1-D array = %p\n", i, (void*)ptr) ; }
s [i]和&(s [i])之间的区别在于,s [i]是1d数组,类型是int [2],其中&(s [i])是指向int的指针[2],你想要什么.
例如,您可以使用sizeof运算符来查看它:sizeof(s [i])在这里是2 * sizeof(int),其中sizeof(&(s [i]))具有指针变量的大小.