|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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本身表述的就是数组第一个元素的地址,你对一个元素的地址进行偏移这个是可以的
|
|