strcpy() 接受的参数类型?
为什么 strcpy()
接受 char 数组指针,即使 strcpy
的定义是 char * strcpy( char * , const char * )
??
#include <stdio.h>
#include <string.h>
main()
{
char str[] = "Have A Nice Day";
char ptr[17];
strcpy(ptr, str);
printf("%s", ptr);
}
Why is that strcpy()
accepting char array pointer even though the definition of strcpy
ischar * strcpy( char * , const char * )
??
#include <stdio.h>
#include <string.h>
main()
{
char str[] = "Have A Nice Day";
char ptr[17];
strcpy(ptr, str);
printf("%s", ptr);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
数组不是指针(尽管它们在行为和用法上相似),但在需要指针的上下文中(例如将其作为参数传递给需要指针的函数的情况),它会明显衰减为指针。
更深入的描述可以在 C FAQ 6.3 中找到。
An array is not a pointer (although they are similar in behavior and usage), but it transparently decays to one in a context where a pointer is needed (like in the case where it's passed as a parameter to a function that expects a pointer).
A more in-depth description can be found in the C FAQ 6.3.
char[n] 给出一个地址,可用于代替 const 指针,并在声明时分配内存。
An char[n] gives an address which can be used in place of a const pointer with memory allocated at time of declaration.
在 C/C++ 中,数组也是指针。
http://www.cplusplus.com/forum/articles/9/ 请参阅此处以获得更多解释。
In C/C++ arrays are pointers as well.
http://www.cplusplus.com/forum/articles/9/ See here for more explanation.