第十一次作业

1、本次课学习到的知识点:

(1)通过示例"密码开锁"引入指针的概念和主要知识点,分析了密码开锁的过程来说明变量、内存单元和地址之间的关系,从而引入指针的基本概念,接着介绍了指针的基本运算以及指针变量的初始化。 

(2)通过例子"角色互换"引入指针作为函数参数的用途和用法,区分按值调用和引用调用,分析了3个swap()函数进行对比,最后通过给定的年和天数计算是某年某月某日的实例学习了如何使用指针作为函数参数返回多个值,解决了以前一个函数最多只能return一个值的问题。  

(3)通过示例"冒泡排序"引入数组名作为函数参数,重点介绍指针、数组和地址之间的关系,通过例子说明了指针和数组可以实现相同的操作。引出上节课学习的选择排序进行了对比。

2. 实验过程中遇到的问题及解决方法:

(1)对指针还不理解,一片茫然。

(2)多看书多问问多百度多Google。

3. 实验心得体会及本章学习总结:

我感到了指针满满的恶意

特别是在已经爆炸了的这个周

4. 几个问题的思考与回答:

(1)两个相同类型的指针变量能不能相加?为什么?

不能。因为指针变量是一种特殊的变量,指针变量的值存放的是所指向变量的地址,两个地 址相加并不能保证结果为一个有效的地址值,因而在C 语言中指针变量相加是非法的。 

(2)在使用scanf()函数时,输入参数列表需要使用取地址操作符&,但当参数为字符数组名时并没有使用,为什么?如果在字符数组名前加上取地址操作符&,会发生什么?

因为字符数组名的值是一个特殊的固定地址,可以看作是常量指针,因此不需要再使用 取地址符来获取该数组的地址。

如果在字符数组名str 前加上取地址操作符&,那么对其取地址&str 可以看做是这个数 组的第一个元素的地址,由于数组地址和数组第一个元素的地址相同,所以&str 表示地址值和str 表示的地址值是相等的。对scanf()的变长参数列表的话,编译器只负责参数传递,怎么解释后边的几个地址的含义, 是由前边的字符串确定的。所以使用scanf(“%s”,str)和 scanf(“%s”,&str)都能通过编译且正常执行。

(3)C语言不允许用赋值表达式直接对数组赋值,为什么?

数组名可以看作是常量指针,因为不可以对一个常量进行赋值,所以不允许用赋值表达式直接对数组进行赋值。

posted on 2016-12-08 19:28  160809130黄靖羚  阅读(258)  评论(1编辑  收藏  举报

导航