实验11——指针的基础应用

1.本次课学到的知识点:

(1)指针是c语言中非常重要的概念,使用指针可以对复杂数据进行处理,能对计算机的内存分配进行控制,在函数调用中使用指针还可以返回多个值。

(2)指针访问内存和操纵地址,是通过变量的地址进行操控。

(3)指针变量:变量p是用来存放地址的变量,实现对变量的间接操作。

(4)指针变量定义:

类型名  *指针变量名;

类型名指定指针变量所指向的变量的类型,必须是有效数据类型:int,float,char等。

(5)定义多个指针变量时,每一个指针变量前都必须加*。

不同类型指针变量所占的内存空间大小相同。

(6)指针的基本运算:

1,取地址运算和间接访问运算:单目运算符&用于给出变量的地址。

2,赋值运算:指针被定义并赋值后,就可以如同其他类型变量一样进行赋值变量。

(7)冒泡排序:每一次循环都将当前最大元素“冒泡”到合适位置。

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

(1)对指针还不太理解,做2,3,4题时有些茫然。

(2)看书反复理解,和117同学讨论,学习了第3第4道题,第2题还有待解决.

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

开始学指针,一下子感觉到难度上升了,尤其指针和地址的概念比较抽象,不太能理解,概念和程序的架构还不太清楚。

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

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

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

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

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

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

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

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

原文地址:https://www.cnblogs.com/linjiahui/p/6143827.html