如果找到一个数字,我打算打印1,如果找不到,则打印0。
我的代码int search(int a [],int n,int key,int ** loc)查看数组并返回0或1。
然而,当我运行它时,我得到了4195632.
我认为这个号码与地址有关,但不知道我做错了什么
a [5]是数组
n =是数组的大小
key是我要找的元素
** loc应该是指向数组
中搜索关键字第一个位置的指针#include <stdio.h>
int a[5] = {5,3,7,2,9};
int n = 5;
int key = 5;
int **loc = 0;
int search(int a[], int n, int key, int **loc)
{
int x;
for(x = **loc; x < n; x++)
{
if(a[x] == key)
{
return 1;
}
else
return 0;
}
return 0;
}
int main()
{
printf("%d\n",search);
}
另外我不确定** loc的用途。我知道它与指针有关,但我想我必须使用它,因为这是功课。
答案 0 :(得分:0)
首先学习一点C。
你得到的是函数搜索的地址(在64位系统上只是其中的一部分),但是你没有调用这个函数。
** loc是搜索数组时的起始索引位置。
答案 1 :(得分:0)
看来你的意思如下。
$(document).ready(function() {
$('#showPanel').click(function() {
$('#buttonDrawer').animate({
width: 150
});
});
});
程序输出
#include <stdio.h>
int search( const int a[], size_t n, int key, size_t *loc )
{
*loc = 0;
while ( *loc < n && a[*loc] != key ) ++*loc;
return *loc != n;
}
int main(void)
{
int a[] = { 5, 3, 7, 2, 9 };
const size_t N = sizeof( a ) / sizeof( *a );
int key = 5;
size_t loc;
if ( search( a, N, key, &loc ) )
{
printf( "%d is found at position %zu\n ", key, loc );
}
return 0;
}
如果最后一个参数必须具有类型5 is found at position 0
,那么该函数可以采用以下方式
int **
很奇怪,但输出与上面的程序相同
#include <stdio.h>
int search( const int a[], size_t n, int key, int **loc )
{
*loc = ( int * )a;
while ( *loc != a + n && **loc != key ) ++*loc;
return *loc != a + n;
}
int main(void)
{
int a[] = { 5, 3, 7, 2, 9 };
const size_t N = sizeof( a ) / sizeof( *a );
int key = 5;
int *loc;
if ( search( a, N, key, &loc ) )
{
printf( "%d is found at position %zu\n ", key, ( size_t)(loc - a) );
}
return 0;
}