关于gets函数的参数问题
在《C/C++函数和算法速查手册》第23页,看到关于gets函数:读取一个字符串。
例子:
#include <stdio.h>
void main(){
char name[20];
printf("请输入你的姓名: "<<endl;
gets(name);
printf("你的姓名是:%s\n",name);
}
疑问:
1.既然指明gets是读取一个字符串, 那么char name[20]是一个字符数组,而不是字符串数组;字符串数组应该是:
char *name[20] 才对; 为什么呢?
2.如果将char name[20] 改成 char *name[20];那么gets(name)应该如何修改?
[解决办法]
char *gets(char *buffer);这个是gets函数的原型,要求传一个 char *buffer类型的指针进去。char name[20] 中的 name作为数组名可以退化为char* 指针 而char *name[20] 的name只能作为 char**指针,类型显然不能满足要求
PS:你可以先温习一下指针和数组。
[解决办法]
数组作为函数参数传入时退化为指针
void fun(int* a) {}
int a[10];
fun(a)//作为参数传入退化为int*
char name[10]
name作为gets的参数传入也会退化为char*
[解决办法]
字符串的初始化是这样的char *a="sdfsddf";
而char *a[]相当于二维数组了