C语言day07-05函数和数组2

pragma mark 函数和数组2

pragma mark 概念

// 数组作为形参自动转换为指针

pragma mark 代码

#pragma 数组
#include <stdio.h>
void printArray (int values[],int length);
int main()
{
    // 要求定义一个函数,实现遍历数组,(只要别人传递数组和函数,就要求输出数组中所有元素的值)
    int num[4] = {1,3,5,7};
    printf("size = %i\n",sizeof(num));
    int length = sizeof(num)/sizeof(num[0]);
    
    printArray(num,length);    // 数组名称就是数组的地址
    return 0;
}

// 如果是传递的是数组的名称,其实传递的是地址
// 如果传递的是地址,其实传递的是指针
// 指针在64位编译环境占8个字节

// 注意: 如果数组作为形参,那么在函数中就不能通过数组的名称计算出数组元素的个数
// 因为系统会自动将数组形参转换为指针,指针占用8个字节
void printArray (int values[],int length)
{
    printf("size = %i\n",sizeof(values));
    
    // 1.动态数组的元素个数
//    int length = sizeof(values) / sizeof(values[0]);
    // 2.遍历数组
    for (int i = 0; i < length; i++)
    {
        printf("value[%i], = %i\n",i,values[i]);
    }
    
}

    原文作者:liyuhong165
    原文地址: https://www.jianshu.com/p/a778218778d2
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞