关于gets函数的参数问题

zaixiankaifa 2012-06-28 06:54:14
在《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)应该如何修改?

...全文
320 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2012-06-29
  • 打赏
  • 举报
回复

http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express
右边Visual C++ 2010 Express下面的Select language...下拉选‘简体中文’,再按Install Now按钮


再参考
C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\gets.c
AnYidan 2012-06-29
  • 打赏
  • 举报
回复
google

字符数组
字符串
字符串数组
lenovosl410k 2012-06-28
  • 打赏
  • 举报
回复
字符串的初始化是这样的char *a="sdfsddf";
而char *a[]相当于二维数组了
zaixiankaifa 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

printf后面跟个endl……这个高端了
[/Quote]


打错咯。。。。。
ProgrammingRing 2012-06-28
  • 打赏
  • 举报
回复
printf后面跟个endl……这个高端了
tongzhipeng5699 2012-06-28
  • 打赏
  • 举报
回复
数组作为函数参数传入时退化为指针
void fun(int* a) {}

int a[10];
fun(a)//作为参数传入退化为int*

char name[10]
name作为gets的参数传入也会退化为char*
氰客 2012-06-28
  • 打赏
  • 举报
回复
char *gets(char *buffer);这个是gets函数的原型,要求传一个 char *buffer类型的指针进去。char name[20] 中的 name作为数组名可以退化为char* 指针 而char *name[20] 的name只能作为 char**指针,类型显然不能满足要求



PS:你可以先温习一下指针和数组。

69,375

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧