C语言中指针和数组

来源:百度知道 编辑:UC知道 时间:2024/05/23 16:49:37
#include "stdio.h"
#include "math.h"
main()

int a[10],*p;
for (i=0;i<10;i++)
{
a[i]=i;
p=a;
}
printf ("%d",_______);\\ 填空,输入最后一个数字;
printf ("%d",_______);\\ 填空,输入倒数第二个数字;

输入改成,输出
郁闷 打错字了 不好意思

a[9] ;a[8] \\不用指针
*(a+9); *(a+8) \\用指针
*(p+9) ;*(p+8)

tyf_416的 方法不正确for循环中一直是p=a;p中存的一直是a【】的首地址;
hgttl1215的 也有问题,*p+9是*p的值加9后输出,应该有();

题中的p=a;放在循环外 更好;

这个题好别扭啊,空还有别的要求么??用不用p来解答??
最简单的a【9】,a【8】;如果用p的话
p=a等价于p=&a[0],
p+i和a+i就是a[i]的地址,或者说它们指向a数组的第i个元素。
那么两个空就是填写*p+9;*p+8

程序本身是绕了一点,实际上,在循环语句当中,是在为a〔10〕赋值,分别为0~9,而且每一次都在为p赋值,而且是赋同样的值,因此

p=a; 语句执行多少次,还是p=a,p永远指向数组a[10]的第一个数。

答案大家已经说了,不再重复

法一:填9,8;
法二:填a[9],a[8];
法三:填p[9],p[8];
法四: 填*(a+9),*(a+8);
法五:填*(p+9),*(p+8);

printf ("%d",i-1);\\ 输出最后一个数字;
printf ("%d",i-2);\\ 输出倒数第二个数字;

printf ("%d", a[9]);\\ 填空,输入最后一个数字;
printf ("%d", a[8]);\\ 填空,输入倒数第二个数字;

或者是:*(a+9) *(a+8)
或者是*(p+9) *(p+8)