好我们开始本节课学习
,那么我们来看第26题
,第26题是
,我们的一个整型
,然后a b c三个变量
,还有一个*号p
,一个整型指针
,那么我们的*p等于&c
,那么在我们定义语句里面
,我们的指针变量跟我们的地址进行交换数据
,是可以的
,而且它们问的是下面哪一个是我们正确的
,那么下面来看scanf语句
,%d
,那么三个%d
,然后输出a b c的值
,那么这一个我们想一想它对不对
,执行以下语句能够正确执行的语句是哪一个
,我们的A答案可不可以
,那么我们A答案很明显是错误的
,我们后面应该跟什么
,跟一个地址
,应该是&符号a b c才可以
,那么所以A选项错在这个地方
,我们看第二个选项是
,%d&p
,那这我们的p
,它已经是个地址了
,在给它加个&符号那么是不可以的
,第三个选项是%d
,后面跟了三个变量
,那么这个不可以
,我们一个变量一个转移字符
,第四个答案
,那么这个答案是正确的
,那么这里我们的第二个
,跟我们四个答案里面肯定是有一个的
,那么所以这题目答案是我们的四个答案为正确答案
,我们看27题
,27题
,那么这里我们是定义了一个数组c[6]
,然后给它进行了一个赋值
,两个指针变量
,我们p等于c
,那么p就来到我们这个10上面
,p来到10上面
,然后我们的s等于&c5
,那么c这是0 1 2 3 4 5
,那么最后一个
,我们s来这个上面
,那么最终我们要求的是s减去p
,那这地方请看清楚
,它问的是s减去p
,而不是我们的*s减去*p
,那么如果是这两个它表示的是我们值的相减
,而这地方它是我们地址相减
,那么地址相减在我们数组里面
,
我们知道我们地址是连续的
,那么所以就应该是我们的5减去我们的0
,第一个是我们的a0 c0
,最后一个是我们的c5
,那么拿c5减去我们的c0
,那就是我们的5
,答案是我们第四个答案
,考试时候看清楚它这里到底是我们这一个变量
,还是我们地址区分好
,我们看28题
,28题这里我们
,通过给我们数组建立一个赋值
,然后我们指针变量
,指针变量指针变量
,可以说什么
,指向指针的指针
,然后p等于a
,那么p来指向我们这个a这个地方来了
,然后k等于&p
,那么k它以为是个指针的指针
,所以它在我们的p的前面又加了一个地址符
,然后我们输出我们这么一句话叫做*号p++
,那么我们是不是要把p
,往后面移一个
,再来输出p的值
,那么当前我们p停在我们第一个上面
,停在我们这个2上面
,因为我们这里有一个p等于a
,那么所以
,所以我们完了以后
,把它往后面移一个
,那么移到我们这个4上面
,然后再把这个4
,给它输出来
,那么咱们看一看对不对
,这个地方那么我们
,p++
,那么我们的p会移到我们这个4上面来
,但是这里我们有个问题是
,在我们这个输出语句里面
,它是会先把p的值
,作为我们当前这个表达式的值
,然后再把我们p加个1
,那么所以这个地方我们求的依然是我们*号p的值
,那么我们的*号p它还是我们2上面
,所以输出一个2
,输出2完了以后我们再运行p加1
,那么现在我们p就来到我们这个4上面了
,来到4上面以后我们输出**k
,那么**k
,*号k指向我们这一个p
,p的话指向我们的a
,
那么所以的话它输出的就是我们一个4
,那么答案是我们第四个答案
,我们的2和4
,这里要想明白
,再强调一次
,我们的p++
,那么它是先把p的值
,作为我们这个p++的表达式的值
,那么所以这里面我们输入的依然是*号p
,把*号p输出完了以后
,我们再把p加个1
,那么来到我们这一个4上面
,来到4上面以后我们的**k
,那我们的**k
,我们的k那么它指向我们的这一个p
,而p的话
,它指向我们这一个a1
,那么所以它输出我们这个4答案是我们第四个选项
,这个地方多留意一下
,我们来看29题
,29题
,那么这里我们是定义了一个二维数组
,然后给它赋值
,那么遇到这种题目什么也不用说
,把这个图给它画出来
,画这样一个表格
,那么分别存的是2 4 6
,这么三个数
,接下来我们的*号p等于&aa[0][0]
,那么我们的p来到我们当前这个数据上面
,现在我们i等于0 i小于1
,那么i的值将会从我们的0开始
,到我们的1结束
,然后如果i等于0
,那么现在我们i确实等于0
,那么这个条件它成立
,成立以后我们i的话
,aa[0][1]
,那么就是我们0 1
,这单元格应该是我们当前这一个
,那么这个里面我们会成为*号p加1
,那么*号p现在等于2加个1
,那么等于我们3
,这就好了
,等于3完了以后
,我们还要求继续来循环我们的循环语句
,那么我们的i变成1
,变成1的话
,我们这个条件
,这里我们还有一个要求是要输出我们的*号p
,那么*号p当前它指向我们2
,*号p它依然在我们这个2上面
,那么所以第一次循环的时候输出一个2
,
那么第二次我们i等于1的时候
,那么这个条件它不成立
,不成立我们
,否则的话++p
,那么++p在哪里呢
,到我们当前这个上面来
,往后面移一个单位
,移一个单位以后再把它值输出来
,那这里面我刚好填好的是一个3
,那么所以答案是我们的2 3
,B选项
,再强调一次
,把我们这个图再好好画一下
,首先我们的二维表格a 3 3
,那么这里面我们三个格子
,然后这里是存了一个2
,这里存一个4这里存了一个6
,完了以后拿我们的*号p指向它
,那么我们p来这个地方
,完了以后
,我们ip的值等于0到我们的2
,那么i的值它将从0开始到我们1结束
,那么如果i等于0
,我们现在i就等于0
,那么条件成立
,成立以后我们aa[i] i加1
,那么就是我们的aa[0][1]
,然后把*号p加个1
,*号p的话在我们当前我们这个里面
,那么所以拿它加个1等于3
,等于3存到我们的0 1里面来
,0 1就是我们这个单元格
,那么所以这里面我们存了一个3
,存个3好了以后
,我们再来这个输出我们*号p
,那么输出*号p
,那么*号p还在我们这个里面没有动
,输出我们一个2
,接下来我们i等于1的时候
,再来循环我们这个if语句
,那么这里不成立
,不成立运行我们否则
,否则的话++p
,p的话往后面跳一个
,然后把*号p输出来
,那么输出我们这个3
,那么最终我们输出结果是
,2和3
,这是我们当前这个题目选第二个选项
,好
,我们看第30题
,第30题我们来看
,一个简单理论题目
,语句p于空值或者是
,与P等于\0是等价的
,那么这个地方它是不等价的
,我们这地方的话\0它也没加单引号
,
它不是一个结束标志
,然后我们int语句
,这一个*号p1
,然后int语句**p2
,int语句*p3
,都是合法的定义语句
,那么这个正确的
,我们这个p2它可以指向我们指针的地址
,那例如我们p2可以等于我们&p1
,把p1的地址存到p2里面来
,这是我们第30题
,那么答案就是我们的第二个选项
,我们看31题
,31题
,它说以下正确的是哪一个
,那么A选项是如果企图
,通过一个空指针来访问一个存储单元
,那么将会得到一个出错的信息
,那么这个的话代表什么意思呢
,那么它所表达含义就是说我们拿一个空指针
,那么就说没有给它赋地址
,没有给它赋地址
,给它存储我们一个数据
,那么它会出现一个错误
,它表达含义这么一个意思
,那么定义一个指针
,我们*号p然后等于我们的5
,那么拿我们这个*号p
,去指向我们这个常量地址
,那么这个是会错误的
,因为*号p本身是没有存储空间的
,这是我们当前31
,那答案选项是我们第一个选项
,我们看32
,32我们数组下标的下限由数组第一个元素组成
,那么这个的话错误的
,我们数组下标它永远
,永远都是我们这一个0
,它不可能因为我们其他任何的因素而发生改变
,那么第四个选项错了
,第一个选项错了
,第二个选项的话也错了
,那么第三个选项
,这一个是合法的
,这是我们当前第32题
,来看第33题
,33题
,如果p是指针变量
,则*号p它们的效果相同
,那么这个是错误的
,我们前面这个是给变量加个1
,这个是把我们指针往后面移动一个单位
,取它的值
,那么要明白
,
第二个选项
,如果p是指针变量
,那么*号p表示p的地址值
,那么这里不对
,应该是什么
,表示p的这一个值
,第三个在对指针变量
,指针进行加减乘除数字1
,表示的是一个存储单位的长度
,非常好
,那么这个三个选项应该是正确的
,我们来一个p加1
,它所表达的不是给这个变量p加个1
,那么如果表示变量加个1的话
,应该是*号p加个1
,这个表示的意思是*p所指向地址的值
,再把这个值加个1
,这地方是把我们指针p往后面移动一个单位
,这单位有可能是8
,也可能是4
,那么表示八个字节四个字节
,再来看下一个
,34
,那么这里问的是我们这个
,基类型不同的指针变量
,可以相互混用
,那么这个是不行的
,那我们的**p
,跟我们这个p的话
,*号p的话不能够混用
,那必须是p等于&p这样一层一层的
,另外的话
,我们基类型
,那例如我们整型
,我们的双精度型也不能混用
,函数类型
,是不能是指针这一个类型
,那么这个是错误的
,我们专门有函数
,指针函数
,我们专门有我们的这个指针函数
,那么就说在我们C语言里面
,只要你这个数据它能够存储
,那么它就有一个地址
,有一个地址
,我们就可以用指针去指向它
,那么我们小到一个普通的变量i整型变量
,大到一个文件
,那么都是可以的
,只要它有存储
,它就有地址
,有地址我们就可以用指针
,第三个选项是我们设指针变量它
,那么p加1
,那么往后面移动
,八个字节那是因为它是双精度型
,那么所以这个答案选项是我们正确的
,我们整型四个字节
,第四个函数的形参不能是指针类型
,那么刚刚讲过了
,我们可以用一个指针去指向我们的函数
,那么形参的话就可以是一个指针函数
,
指针类型的变量
,第35题
,定义了一个数组
,a[10],x
,然后我们表达式*号&a[1]是非法的
,应该写成我们*号&(a[1])
,那么这个是错误的
,我们的*号和我们的&符号它的级别相同
,它们两个级别相同
,然后&符号比我们这两个的级别要高一点
,我们的这个中括号比这两个级别要高一点
,那么看第二个选项
,a加1是非法的
,那么这是合法的
,