数组传参及 &数组

一、printf嵌套调

int main()
{
    printf("%d",printf("%d",12));
    return 0;
}

输出:122

先打印后面的printf,屏幕先出现12;printf函数返回的是其打印的个数,“12”,个数为2个,所以第一个printf在打印2,最终屏幕输出122


二、数组传参

1、数组传向函数的参数为数组首元素地址

2、数组名是数组首元素地址

3、两个例外

3.1 sizeof(数组名):数组名表示整个数组,计算的是整个数组的大小,单位是字节

32.&数组:数组名表示整个数组,取出的是整个数组的地址

例1:数组名是数组首元素地址

int main()
{
    int arr[] = {0};
    printf("%p\n",&arr[0]);
    printf("%p\n", arr);
    return 0;
}

输出:        00000087490FFAD4
                   00000087490FFAD4


例2:sizeof(数组名)

int main()
{
    int arr[10] = {0};
    int sz1 = sizeof(arr);
    int sz2 = sizeof(arr[0]);
    printf("%d\n", sz1);
    printf("%d\n", sz2);
    return 0;
}

输出: 40   4


例3:&数组

int main()
{
    int arr[10] = {0};
    printf("%p\n", arr);
    printf("%p\n", &arr[0]);
    printf("%p\n", &arr);
    return 0;
}

输出:        0000002B9C8FF788
                   0000002B9C8FF788
                   0000002B9C8FF788

个人理解:数组地址与整型变量地址类似,一个整型变量占用4个字节,一个字节占用一个地址,所以一个整型变量有4个地址,但只用第一个地址去表示;同理,数组中有多个地址,但只用第一个去表示。


例4:

int main()
{
    int arr[10] = {0};
    printf("%p\n", arr);
    printf("%p\n", arr+1);


    printf("%p\n", &arr);
    printf("%p\n", &arr+1);
    return 0;
}

输出:             000000845652F9C8
                        000000845652F9CC    //与上面相差4
                        000000845652F9C8
                        000000845652F9F0    //与上面相差40

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值