预习数组和函数

1、数组作为参数传递给函数时,可以通过sizeof得到数组的大小吗

不可以。当把数组作为函数的参数时,你无法再程序运行时通过数组参数本身告诉函数数组的大小,因为函数的数组参数

相当于指向该数组第一个元素的指针。这意味着吧数字组传递给函数的效率非常高,也意味着程序员必须通过某种机制告诉

函数数组参数的大小。

2、可以把另一个地址赋诶一个数组名吗

不可以。数组名不能被放在赋值运算符的左边。一个数组就一个对象,而它的数组名就是指向这个对象的第一个元素的指针。

3、字符串和数组有什么不同

数组的元素可以是任意一种类型,而字符串是一种特别的数组,它使用了一种众所周知的、确定长度的规则

4、有参函数定义的一般形式

类型标识符   函数名 (形式参数表列)

{

 
声明部分

        语句

}

有参函数比无参函数多了一个内容,即形式参数(形参)表列。在形参表列中给出的参数成为形式参数,它们可以是

各种类型的变量,各参数之间用逗号间隔。在进行函数调用时,主调函数将赋予这些形式参数实际的值。形参既然是变量,

必须在形参中给出形参的类型说明。

5、参数传递

C语言中在发生有参函数调用时,实参变量与形参变量之间的数据都是单向的“值传递”方式,包括指针变量和数组名作参数

的情况

C语言要求函数的实参有确定的值,在函数调用时给形参分配相应的内存单元,同时将实参的“值”赋(赋值)给形参,实现

数据从实参到形参的传递(值传递方式)。因为是复制,所以在操作副本(形参)过程中不会影响到原本(实参)内容。

6、函数的声明与定义

函数的声明就是声称一个函数的名字,芝士说明函数的名字,不涉及函数的实现,即没有函数体,所以函数的声明只包括

前三个部分。

函数的定义就是确定一个函数的意义,即让函数具有某项功能,但这里可不是只有函数体,所以函数的定义包含了一个函

数的所有部分。

fun函数的声明:

int  fun(int  i);

fun函数的定义:

int  fun(int  i)

{

 i = i+1;
 return i;

}

7、可以使用数组后面第一个元素的地址吗

可以使用数组后面第一个元素的地址,但不可以查看地址中的值。

如:int i,  a[MAX],  j;

那么i 和j都有可能存放在数组a最后一个元素后面的地址中。为了判定跟在数组a后面的是i还是j,你可以把i或j的地址和

数组a后面的地址进行比较即判定“&i == &a[MAX]”或“&j == &a[MAX]”是否为真。这种方法通常可行,但不能

保证

8、array_name和&array_name有什么不同

前者是指向数组中第一个元素的指针,后者是指向整个数组的指针。

9、数组名作函数参数

数组名本身是一个特殊的指针变量,其值是数组的首地址,因此作为实参时其传给形参的是内存中某指定单元的地址,

调用过程中形参数组占用同一段内存单元,因此对形参数组的操作也就是对实参数组的操作,对实参数组与形参数组来说

数据传递表现为“双向”的,而对实参变量与形参变量而言数据的传递仍然是单向的。

10、结构体数组作函数参数

用结构体数组作函数参数包含两类情况:结构体数组元素作为实参和结构体数组名作为实参。两类情况仍然服从数据的单向值传递原则,只不过前者传给形参的是某些变量的值,后者传给形参的是结构体数组的首地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值