繁体   English   中英

将Char数组传递给C函数

[英]Passing Char Array into a function in C

我无法从函数中的main访问数组。 我该如何纠正? 每当我编译它时,都说参数1是** char类型,而参数1传递给fre却不兼容。 我需要更改任何语法吗?

void fre(char *asd);

int main()

 {
   char *names[7]={"Jayan Tennakoon","John Long","Robert Lang"};

   int i;

   for(i=0;i<7;i++)
     {

        printf("%s\n",names[i]);

     }

     fre(names);

     return 0;

 }

 void fre(char *asd)
   {
     int i;

     for(i=0;i<7;i++)
       {

          printf("%s\n",asd[i]);

       }
 }

您已经声明了一个由7个指向char的指针组成的数组。 您使用其中的3个对其进行了初始化。 您需要传递一个指针数组,而不是一个指向字符数组的指针。 基于这些注释,我将添加一些其他方法来声明数组,这可能使您清楚地知道不同方法的实际含义。

#include <stdio.h>
#include <stdlib.h>

void fre(char *asd[]);

int main(void) {
  char * name  [ ] = {"Jayan Tennakoon","John Long","Robert Lang"};
  char * names [7] = {"Jayan Tennakoon","John Long","Robert Lang"};
  char   names2[7] = {'H', 'e', 'l','l','o','\0'};
  char **names3   = names;

  printf("names2 = %s\n",names2);
  printf("names3[0] = %s\n",names3[0]);
  int i;
  for(i = 0; i < 3; i++) {
    printf("%s\n",names[i]);
  }
  fre(names);
  return 0;

}

void fre(char *asd[]) {
  int i;
  for(i = 0; i < 3; i++) {
    printf("%s\n",asd[i]);
  }
}

我还必须将循环从7减少到3否则您将遇到“未定义行为”,如果幸运的话,这将是一个分段错误;如果不幸的话,它可能会打印出垃圾,但返回的返回值为0。

char *names[7]={"Jayan Tennakoon","John Long","Robert Lang"};

您有一个指向char的指针数组。 所以

void fre(char *asd)

应该

void fre( char *asd[], int n) 
/* it is good to pass the total(here 3) 
 * since you have initialized the first three elements
 */
{
.
.
for(i=0;i<n;i++)
.
.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM