C语言,指针数组与数组指针,数组,可以作为参数传递

#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <stdio.h>

//数组可以作为参数传递给函数
//方式一
void show_array1(int arr[],int len)
{
    for(int i=0;i<len;i++)
    {
        printf("方式一 %d \n",arr[i]);
    }
    printf("\n");
}

//方式二
void show_array2(int *arr,int len)
{
    for(int i=0;i<len;i++)
    {
        printf("方式二 %d \n",*(arr+i));
    }
    printf("\n");
}

//方式三
// 函数1:接收普通数组,返回数组指针
int *array3(int arr[], int len) {
    printf("\n处理普通数组...\n");
    for(int i=0; i<len; i++) {
        arr[i] *= 2; // 每个元素值乘以2
    }
    return arr; // 返回数组首地址
}
//方式四
int *array4(int *arr, int len) {
    printf("\n处理普通数组...\n");
    for(int i=0; i<len; i++) {
        *(arr + i) *= 2; // 每个元素值乘以210; // 每个元素值乘以2
    }
    return arr; // 返回数组首地址
}


//传递数组指针
// 函数1:接收数组指针,返回数组指针
int* array_pointer(int (*arr_ptr)[5]) {
    printf("\n处理数组指针...\n");
    for(int i = 0; i < 5; i++) {
        (*arr_ptr)[i] += 10; // 给每个元素加10
    }
    return *arr_ptr; // 返回数组首地址
}


int main() 
{
    //方式一
    int array[]={11,22,33,44,55};
    int len=sizeof(array)/sizeof(array[0]);
    show_array1(array,len);

    //方式二
    int array2[]={111,252,353,454,555};
    int len2=sizeof(array2)/sizeof(array2[0]);
    show_array2(array2,len2);

    //方式三
    int nums3[] = {1, 2, 3, 4, 5};
    int len3 = sizeof(nums3)/sizeof(nums3[0]);
    
    // 调用函数并接收返回的指针
    int *result3 = array3(nums3, len3);
    
    printf("返回的数组内容:\n");
    for(int i=0; i<len3; i++) {
        printf("方式三 result3[%d] = %d\n", i, nums3[i]);
        printf("方式三1 result3[%d] = %d\n", i, result3[i]);
    }

    //方式四
    int nums4[] = {1, 2, 3, 4, 5};
    int len4 = sizeof(nums4)/sizeof(nums4[0]);

    // 调用函数并接收返回的指针
    int *result4 = array4(nums4, len4);

     printf("返回的数组内容:\n");
     for (int i = 0; i < len4; i++)
     {
         printf("方式四 result4[%d] = %d\n", i, result4[i]);
     }
     
    //数组指针
     printf("\n=== 数组指针示例 ===\n");
    int nums[5] = {10, 20, 30, 40, 50};
    int (*ptr)[5] = &nums; // 数组指针指向整个数组
    
    // 调用函数并接收返回的指针
    int *result5 = array_pointer(ptr);
    
    printf("返回的数组内容:\n");
    for(int i = 0; i < 5; i++) {
        printf("result[%d] = %d (地址: %p)\n", i, result5[i], &result5[i]);
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值