• 数组传参及 &数组


    一、printf嵌套调

    1. int main()
    2. {
    3.     printf("%d",printf("%d",12));
    4.     return 0;
    5. }

    输出:122

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


    二、数组传参

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

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

    3、两个例外

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

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

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

    1. int main()
    2. {
    3.     int arr[] = {0};
    4.     printf("%p\n",&arr[0]);
    5.     printf("%p\n", arr);
    6.     return 0;
    7. }

    输出:        00000087490FFAD4
                       00000087490FFAD4


    例2:sizeof(数组名)

    1. int main()
    2. {
    3.     int arr[10] = {0};
    4.     int sz1 = sizeof(arr);
    5.     int sz2 = sizeof(arr[0]);
    6.     printf("%d\n", sz1);
    7.     printf("%d\n", sz2);
    8.     return 0;
    9. }

    输出: 40   4


    例3:&数组

    1. int main()
    2. {
    3.     int arr[10] = {0};
    4.     printf("%p\n", arr);
    5.     printf("%p\n", &arr[0]);
    6.     printf("%p\n", &arr);
    7.     return 0;
    8. }

    输出:        0000002B9C8FF788
                       0000002B9C8FF788
                       0000002B9C8FF788

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


    例4:

    1. int main()
    2. {
    3.     int arr[10] = {0};
    4.     printf("%p\n", arr);
    5.     printf("%p\n", arr+1);
    6.     printf("%p\n", &arr);
    7.     printf("%p\n", &arr+1);
    8.     return 0;
    9. }

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

  • 相关阅读:
    计算机竞赛保研经验分享 - 项目推荐
    自制Linux精简系统
    智慧法院解决方案-最新全套文件
    JSON 是什么?JSON 介绍
    探索CSS中的宽度设置:width: 100% 与 width: auto 的区别
    程序异常自动捕获记录日志之C#设计笔记(十二)
    servlet的webapp创建
    Word中标点符号单独一行
    秋招每日一题T27——日期
    Java#19(面向对象三大特征之一:多态)
  • 原文地址:https://blog.csdn.net/weixin_45930573/article/details/134742721