C语言指针部分选择题a[p-a]是什么意思? B是什么意思?麻烦解释详细点
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/06/24 22:01:45
C语言指针部分选择题
a[p-a]是什么意思? B是什么意思?麻烦解释详细点
a[p-a]是什么意思? B是什么意思?麻烦解释详细点
![C语言指针部分选择题a[p-a]是什么意思? B是什么意思?麻烦解释详细点](/uploads/image/z/17247863-47-3.jpg?t=C%E8%AF%AD%E8%A8%80%E6%8C%87%E9%92%88%E9%83%A8%E5%88%86%E9%80%89%E6%8B%A9%E9%A2%98a%5Bp-a%5D%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D%3F+B%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D%3F%E9%BA%BB%E7%83%A6%E8%A7%A3%E9%87%8A%E8%AF%A6%E7%BB%86%E7%82%B9)
D是错误的,要弄清楚这个问题,首先我们要知道指针的本质是什么
指针是个存着地址的变量,因为我们每定义一个变量,内存就会给他分配空间,那么每个变量必须会有一个存储他的地方,我们称为地址,他指向谁,里面就存着谁的地址.如题*p=a;
此时p里面存的是数组a的首地址(记住这一点),还可以用取地址符&获取变量的地址,如&a[i];表示的是数组中第i个元素a[i]的地址.变量的值可以用*号获取.* 后面加一个地址,表示这个地址里面的数值(也记住,很重要).开始做题
A中,前面我们已经将p赋值为a的首地址,同理a也可以表示数组的首地址(不知道的话翻书),就是说此时他们的都表示首地址(这是关键),也就是他们的值是一样的,这里*p=a,p-a为0.所以,a[p-a] = a[0];是正确的.
B中,记得前面说过的,取地址符也可以获得地址,那么我们可以知道&a[i],是表示a[i]的地址(不是数值,是地址),这样就很明了了,*(&a[i]),不就是一个* 后面跟一个地址吗?对的,没错,那么他表示的就是地址里面的数据了.因此 B选项就 ,*(&a[i]) =a[i],是正确的
C 你懂的,不懂的话再问我.
我们来说说D
前面我们说过a可以表示数组a的首地址,我们可以通过给地址加1来获取下一个数组中的值,
首先我们用p来表示地址.*p =a ,那么*(p+1) = a[1],*(p+2) = a[2],因此用a也是一样的*(a+1) =a[1]; 同理*(a+i) = a[i], 这个时候你应该知道了.既然a[i]是一个数值,不是一个地址,那么
*(*(a+i)) = *a[i],是没有意义的.是个错误的引用.
祝你进步!
指针是个存着地址的变量,因为我们每定义一个变量,内存就会给他分配空间,那么每个变量必须会有一个存储他的地方,我们称为地址,他指向谁,里面就存着谁的地址.如题*p=a;
此时p里面存的是数组a的首地址(记住这一点),还可以用取地址符&获取变量的地址,如&a[i];表示的是数组中第i个元素a[i]的地址.变量的值可以用*号获取.* 后面加一个地址,表示这个地址里面的数值(也记住,很重要).开始做题
A中,前面我们已经将p赋值为a的首地址,同理a也可以表示数组的首地址(不知道的话翻书),就是说此时他们的都表示首地址(这是关键),也就是他们的值是一样的,这里*p=a,p-a为0.所以,a[p-a] = a[0];是正确的.
B中,记得前面说过的,取地址符也可以获得地址,那么我们可以知道&a[i],是表示a[i]的地址(不是数值,是地址),这样就很明了了,*(&a[i]),不就是一个* 后面跟一个地址吗?对的,没错,那么他表示的就是地址里面的数据了.因此 B选项就 ,*(&a[i]) =a[i],是正确的
C 你懂的,不懂的话再问我.
我们来说说D
前面我们说过a可以表示数组a的首地址,我们可以通过给地址加1来获取下一个数组中的值,
首先我们用p来表示地址.*p =a ,那么*(p+1) = a[1],*(p+2) = a[2],因此用a也是一样的*(a+1) =a[1]; 同理*(a+i) = a[i], 这个时候你应该知道了.既然a[i]是一个数值,不是一个地址,那么
*(*(a+i)) = *a[i],是没有意义的.是个错误的引用.
祝你进步!