iOS基础知识:数组作为函数的参数

来源:互联网 发布:中文域名转码器 编辑:程序博客网 时间:2024/05/22 12:14

数组作为函数的参数:

       1.定义语法:

              返回值类型 函数名(类型数组名[]){

 

                  函数体;

               }

例如: void array(int str[]){

str[0]=10;

str[1]=20;

}

 

       注意:参数里数组名中括号的长度,可写可不写,写了也没用,规范的写法是不写 

引用传递:

       传递的是地址,就好比是把内存共享了一份给函数

 

       特点:在函数内改变了形参的值,那么外面的实参也会发生变化

 例如:

void array(int nums[]){

nums[0]=10;

nums[1]=20;

nums[2]=30;

nums[3]=40;

nums[4]=50;

}

int main{

int nums[5] ={1,2,3,4,5};

  array(nums);

return 0;

}

 数组作为函数的参数是引用传递,因为数组是共享空间的,也就是所谓的引用传递

 

 在函数中遍历数组:

    如果在函数内计算这个数组的长度,永远都会等于2,并不是真实的长度

   解决方法:

       如果以后要用数组作为函数的参数,那么必须再加一个参数,用来传入数组的长度

例如:

void array(char chs[],int length){

    

   for (int i=0; i<length; i++) {

       

       printf("%c\n",chs[i]);

    }

}

int main{


char chs[] ={'a','b','c','d','e'};

    

    int len= sizeof(chs) / sizeof(char);//计算数组长度


    array(chs, len);

    return0;


}

注意:

因为数组名是一个地址常量 不能通过数组名直接赋值

       1.数组和数组变量之间,不能赋值

       例:int nums[5] = {1,2,3,4,5};

          int nums2[5] = nums; //报错

 

       2.数组名声明后也不能赋值

          int nums[5];

          nums = {1,2,3,4,5};


 

总结:

   数组作为函数的参数,形参不需要写长度

   必须再加一个参数,让调用者传入数组的长度

   数组作为函数的参数,不区分,但是区分类型




0 0