利用指针,做个题,这个劲中不中?

来源:百度知道 编辑:UC知道 时间:2024/04/29 14:11:26
#include <stdio.h>
main()
{
int a[10];
int *p;
int i;
printf("Please input tens studut scose:");
for(i=1;i<=10;i++)
{
scanf("%d",p+i);
}
for(i=1;i<=10;i++)
printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",p+i);
getch();
}

要求是,利用指针,输入10个学生的成绩,然后在输出,我写的编译通过,结果失望

#include <stdio.h>
void main()
{
int a[10];
int *p = a; /*指针p指向a*/
int i;
printf("Please input tens studut scose:");
for(i=0;i!=10;i++) /*i从0开始*/
{
scanf("%d",p+i);
}
p = a;/*重新将p指向a*/
for(i=0;i!=10;i++) /*i从0 开始*/
printf("%d ",*(p+i)); /*应该这样输出*/
}

加油!

你要注意数组的元素都是从0开始的,与数组有关的循环都要写成从0开始。想for(i=1;i<=10;i++)要写成for(i=0;i<=9;i++)。
否则一不小心就会出现你的编译通过,而无法执行的结果

错误很严重啊

int*p只声明p是一个指针,那么p指向什么地方呢???这就是野指针。

在int*p后面加一句
p=a;

你的程序中有四处错误:
1、指针未初始化(p未初始化)
2、指针访问越界(p+i的最大值超出了a的范围)
3、头文件包含缺失(getch()在头文件conio.h中)
4、临时指针在第二次使用时候要重新初始化

更改后的程序如下:

#include <stdio.h>
#include <conio.h>
int main()
{
int a[10];
int *p;
int i;

////////////////////////////////////////////////////////////
p = a;
//////////////////////////