首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于gets函数的参数有关问题

2012-07-20 
关于gets函数的参数问题在《C/C++函数和算法速查手册》第23页,看到关于gets函数:读取一个字符串。例子:#inclu

关于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[]相当于二维数组了

热点排行