当前位置 : 主页 > 网络推广 > seo >

我可以从二维数组中检索一维数组地址吗?

来源:互联网 收集:自由互联 发布时间:2021-06-16
我是编程新手.此代码无法正常工作,即从二维数组中检索一维数组地址: #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]))具有指针变量的大小.

网友评论