请问C语言中两个数组作为形参,且需要指出它们的长度。书写格式是?

void read_cards(int str_r[],int n,int str_s[],int m)
这样对吗?

函数的参数和返回值都不能是数组。如果需要把一个数组提供给函数进行使用,则只能提供数组的首指针,如果需要提供数组的长度,则通常的做法是将数组长度作为另一个int参数提供给函数。例如:
void arr_manager(int * ,int);
int main()
{
int arr[10]; //声明一个int类型的数组
int n=10;
...
arr_manager(arr,n); //或者直接 arr_manager(arr,10);
}
void arr_manager(int * arr,int n)
{
arr[3]=5; //可以直接用数组表示法访问
*(arr+5)=4;
for(int i=0;i<n;i++)
{
...
}
}
反正,简而言之,数组整体是不能作为参数的,但是通过提供数组首地址可以实现传递数组的实际功能。如果不想在函数内部修改数组,出于保护数据的目的,可以将函数参数声明为const 指针,例如:
void arr_manager(const int * arr,int n);
以上都是我辛辛苦苦一个字一个字打的,如果有帮助记得采纳,谢谢。

我举个例子
void test( int aiNum[] , int len ) //形参 ,也可以这样:void test( int *aiNum , int len )

固定参数的话就是
void read__cards(int str_r[100],int str_[100])
参数是多大的就直接写在里面

void read_cards(int str_r[],int n,int str_s[],int m) 这样写就可以了 .

void read_cards(int str_r[],int n,int str_s[],int m) 是对的

您写的就是对的,当然也可以直接改为指针,因为数据作为形参在函数体里面跟指针没区别,因此注意不要在函数体里面求数组长度。

当然,参数写成int arr[]也是可以的,不过它也仅代表指针,与int * 等价。

数组作为参数和指针作为参数是一样的,数组作为参数传参时也是把数组的地址传进去。
int arrI[] = {1,2,3,4,5,6};
void func(int arr[], int len)
{
int index = 0;
while (index < len)
{
arr[index++] += 1;
}
}

调用func(arr, sizeof(arr)/sizeof(int));后arr数组内容为{2,3,4,5,6,7};
如果不想改变数组内容函数声明为void func(const int arr[], int len);
另外char类型数组做形参可以不指定数组长度:
void func(const char arr[])
{
while(*arr != '\0') // char类型数组末尾自动设为'\0'
{
cout<<*arr++<<endl;
}
}