博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实验11——指针的基础应用
阅读量:4682 次
发布时间:2019-06-09

本文共 1131 字,大约阅读时间需要 3 分钟。

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

你可能感兴趣的文章
lock_sga引起的ksvcreate :process(m000) creation failed
查看>>
面向抽象/接口编程以及继承
查看>>
POJ 1704 Georgia and Bob
查看>>
数据库插入数据乱码问题
查看>>
Jquery属性获取——attr()与prop()
查看>>
OVER(PARTITION BY)函数用法
查看>>
uva-11995 - I Can Guess the Data Structure!(栈,优先队列,队列,水题)
查看>>
webpack-dev-server 的服务无法使用的问题
查看>>
day11
查看>>
我组第二次全体会议顺利召开!
查看>>
ideat使用struts2之自定义MVC框架
查看>>
排序_选择排序
查看>>
altium annotate 选项设置 complete existing packages
查看>>
前端的md5加密
查看>>
Effective java 系列之异常转译
查看>>
2018年开局第一场“风口”---区块链,最致命的5个坑。
查看>>
【模式识别与机器学习】——SVM举例
查看>>
【转】IT名企面试:微软笔试题(1)
查看>>
IO流入门-第十章-DataInputStream_DataOutputStream
查看>>
「BZOJ2152」聪聪可可
查看>>