在特定 "i" 索引之后传递二维数组以发挥作用,因此只需从二维数组传递特定的一个 d
passing 2d array after specific "i" index to function so just pass specific one d from 2d array
我有一个函数print
,它接受字符指针或一维数组,但在调用函数时我有二维数组,我想在数组 arr[i][j] 中传递特定的第 i 个索引,所以我可以打印 `arr[i][j] 数组
的第 i 个索引的所有 j int
个元素
这是我试过的
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
void print(int n,char *arr)
{
for(int i=0;i<n;i++)
{
printf("%c",arr[i]);
}
printf("\n");
}
int main()
{
char arr[3][3]={{1,3,1},{2,1,2},{2,3,3}};
char *n=(char *)arr+1;
print(3,arr[1]);
//or
print(3,arr+1);
return 0;
}
在 main 中,我试图传递特定的第 i 个索引,is 1
并在 print 函数中打印所有第 j 个元素。我无法让它工作
对于初学者来说,使用转换说明符 %c
.
将 1、2、3 等整数输出为字符是没有意义的
要么使用转换说明符 %d
将它们输出为整数,要么使用 arr[i] + '0'
等表达式将它们转换为字符,或者使用字符 '1'、'2'、' 初始化源数组3'.
为了这次通话
print(3,arr+1);
编译器将发出一条消息,因为参数表达式 arr + 1
char ( * )[3]
的类型与相应函数参数的类型不同 char *
.
你需要写任何一个
print(3,arr[1]);
或
print(3, *( arr + 1 ) );
在这种情况下,表达式 arr[1]
和 *( arr + 1 )
产生一个 char[3]
类型的字符数组,该数组被隐式转换为指向其第一个 [=18= 类型元素的指针].
我有一个函数print
,它接受字符指针或一维数组,但在调用函数时我有二维数组,我想在数组 arr[i][j] 中传递特定的第 i 个索引,所以我可以打印 `arr[i][j] 数组
int
个元素
这是我试过的
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
void print(int n,char *arr)
{
for(int i=0;i<n;i++)
{
printf("%c",arr[i]);
}
printf("\n");
}
int main()
{
char arr[3][3]={{1,3,1},{2,1,2},{2,3,3}};
char *n=(char *)arr+1;
print(3,arr[1]);
//or
print(3,arr+1);
return 0;
}
在 main 中,我试图传递特定的第 i 个索引,is 1
并在 print 函数中打印所有第 j 个元素。我无法让它工作
对于初学者来说,使用转换说明符 %c
.
要么使用转换说明符 %d
将它们输出为整数,要么使用 arr[i] + '0'
等表达式将它们转换为字符,或者使用字符 '1'、'2'、' 初始化源数组3'.
为了这次通话
print(3,arr+1);
编译器将发出一条消息,因为参数表达式 arr + 1
char ( * )[3]
的类型与相应函数参数的类型不同 char *
.
你需要写任何一个
print(3,arr[1]);
或
print(3, *( arr + 1 ) );
在这种情况下,表达式 arr[1]
和 *( arr + 1 )
产生一个 char[3]
类型的字符数组,该数组被隐式转换为指向其第一个 [=18= 类型元素的指针].