C语言里的strcpy()
来源:互联网 发布:mac air怎么截屏 编辑:程序博客网 时间:2024/05/16 05:04
全局区/静态区(Global Static Area):并且在C语言中初始化的全局变量和静态变量放在同一个块,未初始化的全局变量放在另一个块(在C++中,由于全局变量和静态变量编译器会给这些变量自动初始化赋值,所以没有区分,都在一起)。
#include <cstdio>#include <cstring>using namespace std;char a[5]={'A','B','C','D','E'};//char c[5]={'0','1','2','3','4'};//char e[10]={'0','1','2','3','4','5','6','7','8','9'};char b[10]={'0','1','2','3','4','5','6','7','8','9'};char d[10]={'a','b','c','d','e','f','g','h','i','j'};char f[5]={'!','@','#','$','%'};int main(){ for(int i=0;i<5;i++){ printf("%c loc %x\n",a[i],&a[i]); } printf("---------------\n"); for(int i=0;i<10;i++){ printf("%c loc %x\n",b[i],&b[i]); } printf("---------------\n"); for(int i=0;i<10;i++){ printf("%c loc %x\n",d[i],&d[i]); } strcpy(a,b); printf("--------strcpy-------\n"); // char *p=b; //char *p1=a; // for(int i=0;i<10;i++){ // *(p1+i)=*(p+i); // } for(int i=0;i<5;i++){ printf("%c loc %x\n",a[i],&a[i]); } // for(int i=0;i<5;i++){ // printf("%c\n",c[i]); // } //for(int i=0;i<10;i++){ // printf("%c\n",e[i]); //} printf("---------------\n"); for(int i=0;i<10;i++){ printf("%c loc %x\n",b[i],&b[i]); } printf("---------------\n"); for(int i=0;i<10;i++){ printf("%c loc %x\n",d[i],&d[i]); } return 0;}
输出结果:
A loc 402000B loc 402001C loc 402002D loc 402003E loc 402004---------------0 loc 4020051 loc 4020062 loc 4020073 loc 4020084 loc 4020095 loc 40200a6 loc 40200b7 loc 40200c8 loc 40200d9 loc 40200e---------------a loc 40200fb loc 402010c loc 402011d loc 402012e loc 402013f loc 402014g loc 402015h loc 402016i loc 402017j loc 402018--------strcpy-------0 loc 4020001 loc 4020012 loc 4020023 loc 4020034 loc 402004---------------5 loc 4020056 loc 4020067 loc 4020078 loc 4020089 loc 402009a loc 40200ab loc 40200bc loc 40200cd loc 40200de loc 40200e---------------f loc 40200fg loc 402010h loc 402011i loc 402012j loc 402013! loc 402014@ loc 402015# loc 402016$ loc 402017% loc 402018Process returned 0 (0x0) execution time : 0.730 sPress any key to continue.
可以看到,它们这几个数组的区域是相邻的,并且调用strcpy()函数用b对a赋值,可以看到会覆盖在和a相邻的数组。
strcpy()函数使用的是‘\0’进行结束判断,一般的实现为
char *strcpy(char *strDest, const char *strSrc){ if ( strDest == NULL || strSrc == NULL) return NULL ; if ( strDest == strSrc) return strDest ; char *tempptr = strDest ; while( (*strDest++ = *strSrc++) != ‘\0’); return tempptr ;}
所以在没有’\0’符号的前提下会一直往下赋值,直到遇到内存里的某个’\0’(这个字符在内存里非常常见)。
阅读全文
0 0
- C语言里的strcpy()
- C语言里的几个拷贝函数memcpy、memset、strcpy、strncpy
- c语言strcpy函数的漏洞
- 【C语言】strcpy函数的实现
- C语言strcpy,strncpy的用法
- atoi和strcpy的C语言实现
- C语言的strcpy()和strncpy()函数
- C语言中strcpy函数的理解
- C语言strcpy()库函数的实现
- c语言strcpy()用法
- c语言,strcpy
- c语言strcpy实现
- C语言实现strcpy
- C语言strcpy函数
- C语言:strcpy()
- C语言实现strcpy
- 【C语言】 实现strcpy
- c语言实现strcpy
- Fragment 的getUserVisibleHint()与setUserVisibleHint()
- 简单的验证码生成
- [爬虫] Python爬虫 urllib BeautifulSoup
- 添加删除修改
- 渗透测试工具sqlmap基础教程
- C语言里的strcpy()
- 网络安全之VPN详解
- spring中@param和mybatis中@param使用区别
- connect方法分析
- Codeforces 862A Mahmoud and Ehab and the MEX
- POJ3670 Eating Together 【动态规划】【LIS模板】
- spark的几个示例
- java8 不使用循环
- 20170920--navicat测试