向一个函数传一个数组指针,输出的时候出现乱码,求解答

匿名网友 |浏览567次
收藏|2019/06/18 19:08

满意回答

2019/06/18 19:27

在主函数中的二维数组s[3][7]也用指针表达,输出的时就不会出现乱码,而能正确运行了:程序如下:#include<stdio.h>#include<stdlib.h>voidlongestCommonPrefix(char**strs){inti,j;for(i=0;i<3;i++){for(j=0;j<7;j++)printf("%c",strs[i][j]);printf("\n");}}intmain(){char**s[]={"flower","flow11","flight"};longestCommonPrefix(s);getch();return0;}

ygl990951

其他回答(1)
  • 在C语言中,一维数组等价于一维指针,而二维数组不能等价二维指针的,因为它不能确定第二下标的值你的 char s[3][7] 对应的正确的指针参数为 char (*)[7],也就是二维数组作为指针参数,必须指定第二下标的值 ,以下完全OK的void longestCommonPrefix(char (*strs)[7]){ for(int i = 0;i < 3; i++) { for(int j = 0; j < 7;j++) printf("%c",strs[i][j]); printf("\n"); }}或直接将它变成一维的指针void longestCommonPrefix(char *strs){ for(int i = 0;i < 3; i++) { for(int j = 0; j < 7;j++) printf("%c",strs[7*i+j]); //这里要换算 printf("\n"); }}
    回答于 2019/06/18 19:49
0人关注该问题
+1

 加载中...