在特定 "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= 类型元素的指针].