C语言 数组做函数参数不传数组个数的遍历方法

//数组做函数参数不传数组个数的遍历方法
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void PrintfAK(char **pin){
    int i = 0;
    //关键点:pin[i]!=NULL为终止条件
    for (i = 0; pin[i]!=NULL; i++)
    {
        printf("%s\n", pin[i]);
    }
}

void main(){
    //赋值数组最后一个元素是0
    //经过实际检测 NULL,0,'\0'的意义一样  都是00000
    char * strarr1[] = {"123","456","789",NULL};
    char * strarr2[] = { "123", "456", "789", '\0' };
    char * strarr3[] = { "123", "456", "789", 0 };
    printf("%x\n", strarr1);
    printf("%x\n", strarr2);
    printf("%x\n", strarr3);
    //一种新的数组遍历办法,不用传数组元素个数
    PrintfAK(strarr1);
    system("pause");
}

 

转载于:https://www.cnblogs.com/zhanggaofeng/p/5381493.html

C语言中,数组可以作为函数的参数传递,用于接收一组数据,并在函数内部处理。这里我们主要讨论如何完成输入、输出和查询操作: ### 输入(Passing an Array as Argument): 当你想将数组作为函数的输入时,通常需要在函数声明时指定数组的类型和大小,然后通过解引用元素来访问数组内容。例如: ```c void printArray(int arr[], int size); // 声明函数接受整型数组 int main() { int numbers[] = {1, 2, 3, 4, 5}; int length = sizeof(numbers) / sizeof(numbers[0]); // 获取数组长度 printArray(numbers, length); return 0; } // 函数实现 void printArray(int arr[], int size) { for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } } ``` ### 输出(Returning an Array from a Function): 如果你需要函数返回数组,C标准库并不直接支持返回数组,因为数组在栈上分配,不能作为值返回。通常的法是返回数组的首地址(指针)并让调用者负责复制。例如: ```c int* getArray(int size); // 返回整型数组指针 int main() { int* result = getArray(5); for (int i = 0; i < 5; i++) { printf("%d ", *result++); } free(result); // 释放返回的内存 return 0; } // 函数实现 int* getArray(int size) { int* array = malloc(size * sizeof(int)); // 动态分配内存 // ... 初始化数组 ... return array; } ``` ### 查询(Accessing Array Elements within the Function): 在函数内部,你可以像遍历任何其他变量一样遍历数组,对特定位置的元素进行查询。例如,查找最大值: ```c int findMax(int arr[], int size) { int max = arr[0]; for (int i = 1; i < size; i++) { if (arr[i] > max) max = arr[i]; } return max; } int main() { int numbers[] = {1, 5, 3, 9, 2}; int maxNum = findMax(numbers, sizeof(numbers)/sizeof(numbers[0])); printf("The maximum number is: %d\n", maxNum); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值