为什么 C 中的 char 数组不需要元素说明符而整数数组需要?

Why do char array's in C not require a element specifier but integer array's do?

为什么 C 中的字符数组不需要元素说明符而整数数组需要?

例如:

  #include <stdio.h>                                                              
                                                                                   
  int main(void){                                                                 
                                                                                                                                                             
  char array1[100];                                                               
  int array2[100] = {1,2,3,4};                                                    
                                                                                   
  fgets(array1, 100, stdin);                                                      
  printf("%s", array1);    // This prints the string inputted without a specifier                                                       
                                                                                  
  printf("%d ", array2);  // This throws an error since there is no specifier                                                     
                                                                                                                                                                                                                                                                                                                   
      return 0;
  }

传递给函数的数组decay传递给指针。 %s 格式说明符需要一个指向 char 的指针,这就是您要传递的内容,所以一切都很好。同样,在下一行中,您将传递一个指向 int 的指针,但是 %d 需要一个实际的 int,而不是一个指针。所以没用。

根本区别在于 %d 是为了打印单个整数,而 %s 是为了打印整个字符数组(即字符串)。