为什么得不到期待的结果?
程序代码
#include"stdio.h"
void main()
{
int a[5];
int *p;
int i;
for(i=0;i<5;i++);
{
a[i]=i+1;
p=a;
}
/*下标法输出数组元素*/
for(i=0;i<5;i++)
{
printf("a[%d]:%-8d",i,a[i]);
printf("\n");
}
/*地址法输出数组元素*/
for(i=0;i<5;i++)
{
printf("*(a+%d):%-8d",i,*(a+i));
printf("\n");
}
/*下标法输出数组元素*/
for(i=0;i<5;i++)
{
printf("p[%d]:%-8d",i,p[i]);
printf("\n");
}
/*地址法输出数组元素*/
for(i=0;i<5;i++)
{
printf("*(p+%d):%-8d",i,*(p+i));
printf("\n");
}
}
运行结果
root@huangzihan:/program/c_program# ./output_array_elements.out
a[0]:0
a[1]:0
a[2]:1835622560
a[3]:22006
a[4]:-1639330576
*(a+0):0
*(a+1):0
*(a+2):1835622560
*(a+3):22006
*(a+4):-1639330576
p[0]:0
p[1]:0
p[2]:1835622560
p[3]:22006
p[4]:-1639330576
*(p+0):0
*(p+1):0
*(p+2):1835622560
*(p+3):22006
*(p+4):-1639330576
期待结果
a[0]:1 a[1]:2 a[2]:2 a[3]:4 a[4]:5
*(a+0):1 *(a+1):2 *(a+2):3 *(a+3):4 *(a+4):5
p[0]:1 p[1]:2 p[2]:3 p[3]:4 p[4]:5
*(p+0):1 *(p+1):2 *(p+2):3 *(p+3):4 *(p+4):5
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
由于分号的存在,实际循环里啥都没干,下面的代码块不在循环内,只干了
a[5] = 6
,越界赋值……在赋值语句后面打印一下就能看到结果(注意:只打印了一次,说明不在循环内)下面的代码有两个小问题:
printf("\n")
要放在循环外面,不然每个输出都会换行,如*
的输出,后面的数字占位应该用-6d
才能对齐。这玩意纯粹考验眼神来的么