| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
题目描述  
用指针方法,在一个一维数组int a[10]的元素中,查找给定的数,若找到则输出该数,若没找到,输出No。 
 
输入描述  
第一行:10个整数,空格隔开 
第二行:要查找的数 
 
 
输出描述  
找到的数orNo 
 
样例输入  
//[1] 
11 22 43 56 78 90 76 4 2 10[回车] 
43[回车] 
 
//[2] 
1 8 3 4 5 6 2 1 7 9[回车] 
10[回车] 
 
样例输出  
//[1] 
43[回车] 
 
//[2] 
NO[回车] 
- #include<stdio.h>
 
 - int main()
 
 - {
 
 -         int a[10],i,*p,n,flag = 0;
 
 -         for(i=0;i<10;i++)
 
 -         scanf("%d",&a[i]);
 
 -         scanf("%d",&n);
 
 -         for(p = &a[0] ;p < &a[0] + 10 ; p++)
 
 -         {
 
 -                 if(*p == n) flag = 1;
 
 -         }
 
 -         if(flag) printf("%d\n",n);
 
 -         else  printf("NO\n");
 
 -         return 0;
 
 - }
 
  复制代码 
 本帖最后由 啊涂涂 于 2019-2-9 15:05 编辑 
这个的话你程序上写的是 &a【i】 + 10  首先,你的数组是整形的,然后a【i】访问到其中的一个常量数据,结果这里又加上了一个 & ,代表你试图取一个常量的地址,并且对他的地址+10.这肯定是不允许的。本身取常量的地址就是不可以的。你说的 a + i  == a【i】这个值的地址,这是因为这两种写法其实本来就差不多,a本身表述的就是数组第一个元素的地址,你对一个元素的地址进行偏移这个是可以的  
 
 
 |   
 
 
 
 |