C语言的作业,求大佬指教一下
展开全部
#include <iostream> //控制台操作头文件
int main() //主函数
{int a[11],n=6,i; //a是数组,n是学号,i是循环变量
for(i=0;i<11;i++) a[i]=i+1; //给数组赋初值
int *p=&a[n]; //让p指向a[n]
printf("*p=%d,p=%d\n",*p,p); //输出*p和p
printf("*(p+1)=%d,p+1=%d\n",*(p+1),(p+1));//输出*(p+1)和(p+1)
p++; //执行p++
printf("执行p++之后:\n"); //显示执行p++的提示信息
printf("*p=%d,p=%d\n",*p,p); //输出*p和p
printf("*(p-1)=%d,p-1=%d\n",*(p-1),(p-1));//输出*(p-1)和(p-1)
printf("n"); //换行
system("PAUSE"); //暂停,以看清运行结果
return 0;} //程序结束
答案你按照运行结果的抄就行了。至于为什么?因为*p是a[n]里面的内容,而p是a[n]的地址。
第二个,因为*(p+1)是a[n+1]的内容,而p+1是a[n+1]的地址。
第三个,执行了p++之后,地址向后移动一个,这时的p指向a[n+1],所以结果和刚才的第二个相同。
第四个,因为此时的p指向a[n+1],所以*(p-1)是a[n]的内容,而(p-1)是a[n]的地址,所以和第一个输出一样。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |