第11次作业
本次课学到的知识点:
指针是c语言中非常重要的概念,使用指针可以对复杂数据进行处理,能对计算机的内存分配进行控制,在函数调用中使用指针还可以返回多个值。
指针访问内存和操纵地址,是通过变量的地址进行操控。
指针变量定义:
类型名 *指针变量名;
类型名指定指针变量所指向的变量的类型,必须是有效数据类型
不同类型指针变量所占的内存空间大小相同。
冒泡排序
实验过程中遇到的问题及解决方法:
1.对指针没有听懂,和地址等概念理解不够充分
2.多看书,上网看别人写的代码从中理解
实验心得体会及本章学习总结:
指针部分完全没有听懂,还是得看书和查资料
几个问题的思考与回答:
(1)两个相同类型的指针变量能不能相加?为什么?
答:不能。因为相加后的值可能超出,不在这个地址内,是毫无意义的,且是不被允许的。
(2)在使用scanf()函数时,输入参数列表需要使用取地址操作符&,但当参数为字符数组名时并没有使用,为什么?如果在字符数组名前加上取地址操作符&,会发生什么?
答:因为字符数组名的值是一个特殊的固定地址,可以看作是常量指针,因此不需要再使用 取地址符来获取该数组的地址。
如果在字符数组名str 前加上取地址操作符&,那么对其取地址&str 可以看做是这个数 组的第一个元素的地址,由于数组地址和数组第一个元素的地址相同,所以&str 表示地址值和str 表示的地址值是相等的。对scanf()的变长参数列表的话,编译器只负责参数传递,怎么解释后边的几个地址的含义, 是由前边的字符串确定的。所以使用scanf(“%s”,str)和 scanf(“%s”,&str)都能通过编译且正常执行。
(3)C语言不允许用赋值表达式直接对数组赋值,为什么?
答:因为数组的数组名本质上来说相当于一个指向该数组的第一个元素的指针常量,不可以对一个常量进行赋值,它不是一个标量。