码迷,mamicode.com
首页 > 编程语言 > 详细

<16>【理解】数组元素作为函数参数+【掌握】数组名作为函数参数+【掌握】数组名作为函数参数的注意点

时间:2015-07-07 19:07:14      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:

#include <stdio.h>

int sum(int x,int y){

    return x+y;

}

void printNum(int x){

    //判断x的值
    if (x>0) {
        printf("%d\t",x);
    }else{
        printf("0\t");
    }

}



int main(int argc, const char * argv[]) {
   
    int a[5]={1,-2,-3,-4,5};
    //需求:要求计算数组的第一个元素和最后一个元素的和
    // a[0]
    // a[4]
    //           1      5
     int s = sum(a[0], a[4]);
     printf("s = %d\n",s);
    
    for(int i=0;i<5;i++){
       
        printNum(a[i]);
    
    }
    
    return 0;
}
s = 6
1    0    0    0    5    

【掌握】数组名作为函数参数

#include <stdio.h>
void change(int arr[2]){

    //测试,打印arr的值
    printf("arr = %p\n",arr);
    
    arr[0]=18;

}


void test1(){


    
    int a[2]={1,2};
    printf("a = %p\n",a);
    //a  0x7fff5fbff7c0
    //用数组名作为函数参数,传递的是地址
    //实参是数组名a,形参是arr
    //此时 a和arr在内存中代表了同一块内存空间
    change(a);
    
    printf("a[0] = %d\n",a[0]);

}

//定义一个函数
float avg(float score[5]){

    float sum = 0.0f;
    for (int i=0; i<5; i++) {
        //把门课的成绩加到了一起
        sum += score[i];
    }
    
    return sum/5;
}

int main(int argc, const char * argv[]) {
    
    test1();

    float f1[5]={59.9,58.72,60.11,56.33,81.66};
    //数组名作为了函数的实参
    //是地址传递
    float av = avg(f1);
    printf("%.2f\n",av);
    
    return 0;
}
a = 0x7fff5fbff6c0
arr = 0x7fff5fbff6c0
a[0] = 18
63.34

 

【掌握】数组名作为函数参数的注意点

       数组名作为函数的参数的注意点
         1、形参数组的类型长度要和实参一致
         
2、形参的数组的长度和实参的长度可以不一致,虽不会报错,运行的结果和实际不相同
3、形参数组的长度可以不写
   
         4、关于数组名作为函数参数后,数组的长度信息丢失的问题

 

 

#include <stdio.h>
//打印数组的内容
void print_arr(int arr[]){

    for (int i=0; i<10; i++) {
        printf("%d\t",arr[i]);
    }

}


void print_arr2(char arr[]){
    
    //为什么是8?
    //C语言中规定,不管什么类型的数据,数据的内存地址在内存中占用8个字节
    //int a = 4;
    int len = sizeof(arr);      //8个字节
    printf("\nlen = %d\n",len); //40?
    
//    for (int i=0; i<10; i++) {
//        printf("%d\t",arr[i]);
//    }
    
}

int main(int argc, const char * argv[]) {
    //数组名作为函数的参数的注意点
    //1、形参数组的类型和长度要和实参一致
    //   1)如果类型不一致,会造成错误
    int a[10]={1,2,3,434,5,6,7,7,8,9};
    //print_arr(a); //遍历数组,并且打印出来   正常写法
    
    //错误写法
//    float f1[5]={1.2f,33.4f,2.3f,5.6f,3.14f};
//    //实参的类型和形参的类型不匹配
//    print_arr(f1);   //print_arr 形参是int类型的数组
    
    //2、形参的数组的长度和实参的长度可以不一致,虽不会报错,
    //   运行的结果和实际不相符
    print_arr(a);
    
    //3、形参数组的长度可以不写
   
    //4、关于数组名作为函数参数后,数组的长度信息丢失的问题
//    int len = sizeof(a); //a占用的总得字节数
//    printf("\nlen = %d\n",len);  //40
    //
    //printf("%p\n",a);
    //print_arr2(0x7fff5fbff790);
//    double d1[3]={2.3,4.5,5.5};
//    print_arr2(d1);
    char ch[3]={a,b,c};
    print_arr2(ch);
    
    return 0;
}

 

<16>【理解】数组元素作为函数参数+【掌握】数组名作为函数参数+【掌握】数组名作为函数参数的注意点

标签:

原文地址:http://www.cnblogs.com/kongweiiwei/p/4627591.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!