strcpy的参数
来源:互联网 发布:小世界网络模型的例子 编辑:程序博客网 时间:2024/06/04 19:53
strcpy我们应该是经常用的,C语言的基本函数,该函数的第一个参数是char *,第二个参数是const char *。其实关于第二参数我一直没怎么注意,这里为什么是const char *呢?我们在传这个参数的时候需不需要进行const类型强制转换,今天就遇到了。
strcpy的第二个参数,我们平时直接传的char *,用着很好,没啥问题。那为什么用const char *,原因是const char *能接受char *,而char *却不能接受const char *。
[xxx@localhost strcpy]$ [xxx@localhost strcpy]$ cat fun.c #include<stdio.h>void func(char *str){ printf("str=%s\n",str);}int main(){ const char str1[]="abc"; char str2[]="def"; func(str1); func(str2); return 0;}[xxx@localhost strcpy]$ gcc fun.c fun.c: In function ‘main’:fun.c:14: warning: passing argument 1 of ‘func’ discards qualifiers from pointer target typefun.c:3: note: expected ‘char *’ but argument is of type ‘const char *’[xxx@localhost strcpy]$
结果报错了,char *参数不能接受const char *参数。如果你把func的参数改成const char *就可以编译成功。const char *实质上使变量的权限降低了,变得更为安全;char *权限高一点,就变得不是安全,因为别人可以随意修改嘛。则变量只能沿着降低权限的方向上走,也就是朝着更安全的方向走,不能朝着更危险的方向上走。C++的拷贝构造函数的参数用const也是这个道理。
阅读全文
0 0
- strcpy的参数
- error:对于字符,不能作为strcpy、strcat函数的参数
- 字符串指针作为函数的参数.实现strcpy()函数
- strcpy()库函数的实现
- strcpy的疑问
- 无聊的测试-strcpy
- strcpy的函数原型
- strcpy函数的实现
- 没有完美的strcpy
- strcpy,strlen的源代码
- strcpy的疑问
- strcpy 函数的原型
- strcpy的实现
- 迷一般的strcpy
- 经典的strcpy 函数
- 面试:strcpy的实现
- strcpy函数的思考
- strcpy, strcat 的问题
- 实验吧-让我进去【salt加密 哈希长度拓展攻击】
- 判断一棵树是否是完全二叉树【每日一题】
- Apache Spark 内存管理详解
- Java中String和byte[]互转问题
- ES6 module export和import
- strcpy的参数
- 注册表
- SSAS对称维度与非对称维度
- windiows 下 WSAEventSelect模型
- Java中一个类里面有两个用synchronized修饰的非静态方法,不同的线程中的实例访问这两个方法时会发生什么?
- 被误解的明朝——中国的"文艺复兴"(转)
- 启动oracle数据库配置
- Android View
- Maven阿里云仓库