微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将数组传递给functions.Format错误? C

如何解决将数组传递给functions.Format错误? C

我正在尝试创建一些将空数组填充的函数,但遇到以下格式错误。我仍在尝试理解指针,但数小时后仍找不到解决方法这些格式错误是什么?

format specifies type 'char *' but the argument has type
      'char (*)[20]' [-Wformat]

format specifies type 'int' but the argument has type
      'int *' [-Wformat]

代码

int main() {
   int arrayusers[200];
   char arraynames[200][20];
   int n;
   n=0;
   Donate(arrayusers,arraynames,n);
   return 0;
} 

void Donate(int *arrayusers,char (*arraynames)[20],int n)
{
    int b=0;
    printf("Enter Name\n");
    scanf("%s\n",&arraynames[n]);
    printf("Enter ID\n");
    scanf("%d\n",&arrayusers[n]);
    n = n+1;
    for(b=0; b<n; b++){
        printf("%s\n",&arraynames[b]);
        printf("%d\n",&arrayusers[b]);
    }
}

解决方法

看这行:

Span<T>

printf想要使用您要代替%d的整数。但是,在将&放在其中时,您正在传递指向该整数的指针。您不想给它一个指向整数的指针,而是要使用的实际整数。像这样写:

printf("%d\n",&arrayusers[b]);

数组名称本身只是指向数组中第一个元素的指针。但是一旦将[n]放在它的后面,就会从该数组中获得一个元素,该元素不是指针(除非它是指针数组),而是该元素在数组中的实际值。当您在&处加上&时,表示要接收该号码的地址。就像您要告诉printf函数将要打印的数字的地址放入%d。这对编译器没有意义,因为%d应该是数字而不是数字的指针。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。