gpt4 book ai didi

c++ - 检查 Int 是否在数组中 C/C++

转载 作者:行者123 更新时间:2023-11-30 17:11:22 25 4
gpt4 key购买 nike

我正在编写一个函数,它接受一个 int 和一个 int 数组作为参数,如果 int 在数组中则返回 true。

boolean in_array(int subject,int array[]){

int length;
int k;

length = sizeof(array)/sizeof(array[0]);

for(k=0;k<length;k++){

if(array[k]==subject) return true;

}

return false;
}

该函数无法正常工作,因为 sizeof(array)/sizeof(array[0]) 不返回长度。看来,无论数组有多长,sizeof(array) 总是返回 2。

那么如何求数组长度来判断int是否在数组中呢?

最佳答案

当您将数组作为参数传递给函数时,数组变量将转换为指向数组的指针。

因此,sizeof不会返回数组中的字节数,而是返回指针中的字节数。您必须将数组的长度作为单独的变量传递,或者包含某种终止元素(例如,C 样式字符串使用空字符 \0 来终止字符串)。

我已经构建了一个程序来演示所有这些:

#include <iostream>
#include <typeinfo>

void func(int a[10], int b[]){
std::cout<<"a (inside function): "<<sizeof(a)<<"\n";
std::cout<<"b (inside function): "<<sizeof(b)<<"\n";
std::cout<<"a (inside function type): "<<typeid(a).name()<<std::endl;
std::cout<<"b (inside function type): "<<typeid(b).name()<<std::endl;
}

int main(){
int a[10];
int b[40];
std::cout<<"a (outside function): "<<sizeof(a)<<"\n";
std::cout<<"a (outside function type): "<<typeid(a).name()<<std::endl;
func(a,b);
}

输出为:

a (outside function): 40
a (outside function type): A10_i
a (inside function): 8
b (inside function): 8
a (inside function type): Pi
b (inside function type): Pi

请注意,在函数外部,a 是长度为 10 的 int 数组 (A10_i),并且大小已知。在函数内部,ab 都是指向整数 (Pi) 的指针,并且数组的总大小未知。

关于c++ - 检查 Int 是否在数组中 C/C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32365933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com