为什么 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
是为了打印整个字符数组(即字符串)。
为什么 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
是为了打印整个字符数组(即字符串)。