预习二 十个问题

1、 C语言对数组的处理为什么是非常的有效的 ?

1)除少数编译器出于谨慎会做一些繁琐的规定外,C语言的数组下标是在一个很低的 层次上处理的。

2)当数组出现在一个表达式中时,它和指向数组中第一个的指针时等价的,因此指针和数组几乎可以互换使用。

3)保证说明和定义的一致性

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

不可以。当把数组作为函数的参数时,你无法在程序运行时通过数组参数本身告诉函数该数组的大小,因为函数的数组参数相当于指向该数组第一个元素的指针。这就意味着把数组传递给参数的效率非常高,也就意味着程序员必须通过某种机制告诉函数数组参数的大小。  告诉函数数组参数的大小可以:将数组和表示数组大小的值一起传递给函数 或 引入某种规则来结束一个数组。

3、为什么不能将一个地址赋值给一个数组

数组名不能放在赋值运算符的左边(它不是一个左值,更不是一个 可修改的左值).一个 数组是一个对象,而它的数组名就是指向这个对象的第一个元素的指针。 给数组名赋值是毫无根据的。

4.字符串和数组的 区别

数组的元素可以是任意一种类型,而字符串是一种特别的数组,,可以将字符串简单地看做一个字符数组或看作一种特别的 类型,数组的 长度可以是任意的。

5、全局变量与局部变量的主要区别

两者的“生命周期”不同。当变量标识的存储空间可以在程序中合法使用时就认为该变量是有“生命”的。

全局变量标识的存储空间在程序开始执行前已经分配,程序执行完毕才释放,也就是说在程序运行期间,与全局变量相关的存储空间一直属于变量所有,可以在程序中合法使用,这是全局变量无论在何处定义都可以通过声明扩展其作用域的根本原因。
局部变量标识的存储空间在定义时分配,在相关的复合语句结束处自动释放,在作用域之外,局部变量标识的存储空间已经不再属于它所有了,局部变量自然也就不可能再合法使用了。
局部变量标识的存储空间总在变量定义时分配,在变量的作用域结束时释放,因此又称局部变量为动态变量。
6、将数组名作为函数参数的基本内容
   数组名本身是一个特殊的指针变量,它的值是数组的首地址,因此作为实参时传递给形参的时内存中某指定单元的地址,调用过程中形参数组和实参数组占用同一段内存单元,因此对形参数组的操作也就是实参数组的操作,对实参数组和形参数组来说数据传递表现为‘双向传递’,而对实参变量和形参变量而言数据的传递仍是单向的。
7、数组作为形参和一般变量作为形参最大的 区别是什么?
函数体中数组参数元素的改变会影响到实参数组中相应的元素,也就是说实参数组中的元素也会发生同样的改变,这是数组作为形参与一般变量作为形参时最大的区别
8、什么是回调函数及作用是什么
回调函数是一个通过函数指针调用的函数。如果你把函数指针(函数的入口地址)传递给另一个函数,当这个函数指针调用它所指向的函数时,我们就说这个函数时回调函数               这个函数用于在一个单链表中查找一个指定的值,返回保存这个值的节点。它的参数时指向这个链表第一个节点的指针和要查找的值
9、结构体数组元素和结构体数组名作为实参时如何传递的?
结构体数组元素采取单向‘值传递’方式将结构体变量所占的内存单元的 内容全部顺序复制给形参(函数调用期间形参也要占用内存单元)。       结构体数组名作为实参时,传递给形参大的时内存中已指定单元的地址,调用过程中形参数组和 实参数组真用同一段内存单元,因此对形参数组的 操作也就是对实参数组的操作,对数组的操作表现为双向性
10、如何利用全局变量编写有多个返回值的C语言函数
由于全局变量的 作用域是从定义变量开始直到程序结束,而对于编写有多个返回值的C语言函数,我们可以考虑把要返回的多个值定义成全局变量。当函数被调用时,全局变量被更改,我们再把更改后的 全局变量应用于主调函数中。函数被调用后,被更改后的全局变量值即为函数的数个返回值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值