C语言第二次作业

一、指针与数组的学习

 1.1 观看指针与数组和指针运算的视频

 1.2 观看视频所记录的纸质笔记

C语言第二次作业

C语言第二次作业

 C语言第二次作业

 1.3 观看视频时所敲打的代码文件

C语言第二次作业

 1.4 学习时存在的问题

 (1)为什么*p++中++的优先级高于*,在运算时还是先取p的地址然后再加1呢?

 答:百度查询了解*p++;等价于*(p++);但是,要注意++放在后面是先使用p原来

        的值,然后才是改变p的值。也就是*(p++);等价于 =*p ; p = p+1;这是两方

        面综合的结果。

(2)为什么q1-q是6而不是24?

  答:看视频知道当两个指针相减时,结果不是两个地址的差,而是两个地址的

         差/sizeof(指针类型)。

二、pta作业存在的问题

2.1 判断题

C语言第二次作业

 正确答案:a的地址赋给了指针p,那么p+1指向了a[1],*(p+1)就是a[1]的值是4,

                   **(p+1)即*4读取的是地址4里面的值,而不是4。

 

C语言第二次作业

定义:指针就是保存地址的变量。

 C语言第二次作业

指针之间比较大小限于两个相同类型的指针变量。

2.2 单选题 

C语言第二次作业

正确答案:B

 因为指针p指向x,p就相当于&x,则*p=*&x,即*p=x,所以(*p)++相当于

 x++,故选B。

C语言第二次作业

正确答案:B             我误以为是变量加1了。

 再看一遍题后知*p=&a[0]+1是一个指针变量,*p=&a[0]+1就是a[0]的地址

 加1,并赋给p,这样p指向的就是a[1],所以*p的值是3。

2.3 填空题

C语言第二次作业

正确答案:4 6     用Dev-c++运行结果。

C语言第二次作业

 正确答案:2 5

查询得知因为函数没有返回值,函数里都是对指针的交换而不是对指针

指向的值的交换,所以指针的值没有变。

2.4 程序填空题

C语言第二次作业

查找知第一空应为a,10,&max,&min, 但还不知道为什么。