Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C编程:'&';使用scanf中的数组_C - Fatal编程技术网

C编程:'&';使用scanf中的数组

C编程:'&';使用scanf中的数组,c,C,我的程序里有个警告,上面写着: 格式“%c”要求参数类型为“char*”,但参数2的类型为“char(*)[10]”[-Wformat] 以下是我的节目: #include<stdio.h> int main() { char array[10]; scanf("%10c", &array); printf("%.10s", array); return 0; } 如果他们都提供相同的地址,为什么会发出这样的警告? 它也适用于%s。 它们在大多数window

我的程序里有个警告,上面写着:

格式“%c”要求参数类型为“char*”,但参数2的类型为“char(*)[10]”[-Wformat]

以下是我的节目:

#include<stdio.h>
int main()
{
  char array[10];
  scanf("%10c", &array);
  printf("%.10s", array);
  return 0;
}
如果他们都提供相同的地址,为什么会发出这样的警告? 它也适用于%s。 它们在大多数windows编译器中都可以正常工作,没有任何警告

因为我是windows用户,所以我以前从未使用过gcc编译器。我当时的想法是,编写函数指针并不是强制性的。 我读到,你不必写函数指针

我越来越糊涂了,请帮我弄清楚


谢谢。

array
&array
都会生成指向相同地址的指针,但类型不同。前者在大多数情况下相当于
&array[0]
,在您的情况下是
char*
<但是,code>&array是数组本身的地址,在您的示例中,它的类型为
char(*)[10]

数组和&array不一样。。。即使它们在其中有相同的地址位置

这里的数组是char数组,它指向一个char,如果您增加它,它将增加1个char大小

但是&array指向整个数组,如果增加,它将增加数组大小


scanf函数需要数组。。not&array

char(*)[10]不是指包含10个元素的指针数组吗?谢谢你的回答,但这可能不是我想要的。不,
char(*)[10]
是指向10
char
s数组的指针。你能解释一下%[width]c是如何工作的吗?如果可能的话,请给我看一个使用指向字符数组指针的简单程序。这将非常有用。指向数组的指针很少使用。@ruakh感谢您的编辑。
int main()
{
  char array[10];
  puts("ADDRESS:");
  printf(" %p \n %p \n %p", array, &array, &array[0]);
  return 0;
}