问题描述
- C语言指针指向数组问题
-
#includeint main(){ int a[5]; int *p,i; printf("please enter ten numbers:"); for(i=0;i<5;i++){ scanf("%d",&a[i]); } for(p=a;p<(a+5);p++) scanf("%d",*p); printf(" "); return 0; }
代码如图,是课本上的例题,我运行后输入五个数字以后没有反应。而且还想问一下,将第二个for循环中的(a+5)改为(p+5)可以吗?
万分感谢!!!
解决方案
1、需要输入10个数字,你的代码没有输出,当然没有反应。
2、不可以修改。p<p+5不是永远成立了??p在++,这样会造成越界访问。
解决方案二:
最近学数据结构,在学数组与指针之间的关系的时候,发现以前一直没理解的一个问题。
首先我们看看数组与指针的一些关系吧。如果我们定义一个数组int a[ ] = {1,1,2,3,5,8,},再把一个指针int *p = a;这句话我们该怎么理解呢?其实很简单,我们只要知道这个语句是定义了一个指向整型数组的指针变量p,并且p指向数组的首地址,后面的就迎刃而解了。而a代表的是数组的第一个元素的地址,我......
答案就在这里:C语言数组与指针的问题
----------------------
解决方案三:
不可以的,因为 for(p=a;p<(a+5);p++),每次p都是在移动的。p<(a+5)实际上就是为了控制不让指针指向的地址超出数组范围。
解决方案四:
lz你的这段程序又没有什么打印结果的单纯的就是输入当然没有反应了
将第二个for循环中的(a+5)改为(p+5),每次的p的值都是在变动的,这样就一直在循环中跳不出去了
解决方案五:
把第二个scanf改为pritnf就可以打印了
解决方案六:
你确定书上写的是 scanf("%d",*p);不应该是p吗,而且你没输出,你想有什么反应。
时间: 2024-12-01 16:28:45