嵌入式学习 Day11

一. 数组作为函数参数


1.数组元素作为函数实参  --- 此时函数的形参 是一个与实参类型相同变量即可 

void printInt(int a);
printInt(a[0]); 

2.数组作为函数的形参 --- 数组作为函数参数,传递的是数组的首元素的地址。
void printArray(int a[10]); //此时 形式上写成数组 
                                        //编译器最终 是当做指针变量来看的 
void printArray(int *a);     //实际是这样的 

注意:

1.被调函数的形参和主调函数中的实参,定义一样的情况下

(1)(形参int a;实参int a)若为数值变量,二者不是一个东西,是独立的,a代表不同的内存空间,传参只是传了实参a空间上的数值给形参a用(此a非彼a)

(2)(形参int a[ ];实参int a[ ])若为数组变量,二者是一个东西,不是独立的,a代表相同的内存空间首地址,传参传递的是实参数组的首元素的地址供形参用。因此,形参与实参具有相同的首元素地址,即共用同一存储单元,具有相同的值形参数组内的值发生变化,也就是实参数组中的值发生了变化(重点)

 形参int a[n]     实参int b[n] 指的是同一内存空间。哪怕二者变量名不同 (此a是彼a,也是b)

2.

(1) 用数组作函数参数,应在主调函数和被调函数分别都定义数组,例中 int a
是形参数组名, int b 是实参数组名,分别在其所在函数中定义,不能只在一方定义
(2) 实参数组与形参数组类型应一致,如不一致,结果将出错。
(3) 在被调用函数中声明了形参数组的大小为 10(void printArray(int a[10])), 但在实际上,指定其大小是不起任何作用的,因为编译器对形参数组大小不做检查,只是将实参数组的首元素的地址传给形参数组。(数组传参只传地址)
(4) 形参数组可以不指定大小,在定义数组时在数组名后面跟一个空的方括号。
     void printArray(int a[  ])


                            
一维整型数组作为函数的形参:
a.一个是数组形式
b.数组长度
void printArray(int a[10],int len);  //形参 
printArray(a,len);                         //实参 (1)数组名, (2)数组长度 


练习:
   写个函数,往数组中填入 斐波拉契数列  前n项 
嵌入式学习 Day11_第1张图片

练习:
   找出数组中的最大值 

嵌入式学习 Day11_第2张图片

练习:
     数组逆序 嵌入式学习 Day11_第3张图片

练习:
     数组排序 

嵌入式学习 Day11_第4张图片

嵌入式学习 Day11_第5张图片

嵌入式学习 Day11_第6张图片



一维字符型数组,做函数形参

void printStr(char s[1000]);    //形式上 写成字符数组的形式 
void printStr(char * s);           //实际上编译器最终当做指针变量处理

函数调用:

void printStr(char s[1000])
printStr(s);      //数组名  
                       //注意: 此时不需要传数组长度 ---因为字符串有结束标志 

练习:
   实现输入 函数 
   //1.如何往字符数组中输入多个字符 ?
   //2.最终处理成字符串 加'\0'

嵌入式学习 Day11_第7张图片


练习:
   统计字符串长度 函数

嵌入式学习 Day11_第8张图片


练习:
   strcpy     
   嵌入式学习 Day11_第9张图片 

练习:
  strcat 
 嵌入式学习 Day11_第10张图片 
练习
  strcmp 
  嵌入式学习 Day11_第11张图片

 

你可能感兴趣的:(c++,链表,开发语言)