《c程序设计语言》读书笔记-5.3-指针实现strcat
来源:互联网 发布:下载机械制图软件 编辑:程序博客网 时间:2024/05/18 22:54
#include <stdio.h>#include <math.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <curses.h>void strcat_(char *s,char *t){ while(*s) s++; while((*s++ = *t++)) ;}int main(){ char c[] = "I love you!"; //char *c = "I love you!";; char p[] = "You are a good man!"; //*p = "You are a good man!" ; strcat_(c,p); return 0;}
这个程序有一个注意的地方,char *p 这样定义是不行的,因为指针定义的字符串不可修改;而如果用数组 p[ ] 定义数组,则可以修改。
百度知道网友给我的回答:
传递的都是字符串的首地址,但是字符串内容却不同:char* c = "I love you!"这里定义的指针c指向的是一个常量字符串"I love you!" ,p也一样char c[] = “I love you!";这里的c是一个字符数组,以'\0'结尾。p也一样 所谓常量字符串,就是说字符串的内容是不能改变的,你再调用strcat_函数,其实就是把p的内容连接到c字符串的后面,改变字符串c,若c是常量,显然会语法错误。而c[]定义的是个字符数组,不是常量,可修改的。到这里疑问已经解答了。 另外,char c[] = “I love you!";这种定义字符串变量的方法,[]里面没写字符数组大小,但是实际开的空间大小是后面字符串的长度+1,你要想再在c后面连接字符串,实际上空间是不够的。所以也肯定会报错,越界访问了。 所以正确的做法是定义char c[1000] = “I love you!";里面的大小1000只要能确保能容纳待连接的字符串长度就行。
0 0
- 《c程序设计语言》读书笔记-5.3-指针实现strcat
- 《c程序设计语言》读书笔记-5.4-指针实现strend
- 《c程序设计语言》读书笔记-5.5-指针实现strncpy,strncat,strncmp
- 《c程序设计语言》读书笔记-5.6-指针重写getline等函数
- 《c程序设计语言》读书笔记-5.9-指针转换天数和日期
- 《c程序设计语言》读书笔记(五)——指针与数组
- 《C程序设计语言》读书笔记20091106
- 《C程序设计语言》读书笔记
- c程序设计语言读书笔记(1)
- C程序设计语言读书笔记(2)
- C程序设计语言读书笔记(3)
- C程序设计语言读书笔记(4)
- C程序设计语言读书笔记(5)
- C程序设计语言读书笔记(6)
- C程序设计语言读书笔记(7)
- C 程序设计语言-读书笔记
- 《c程序设计语言》读书笔记
- 《c程序设计语言》读书笔记
- Swift tutorial 自学笔记(一):value 和 过程
- Google中国2015校园招聘笔试Round D APAC Test Problem A. Cube IV
- Gradient Descent for Linear Regression,线性回归的梯度下降算法
- bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
- 设计模式C++实现(11)——装饰模式
- 《c程序设计语言》读书笔记-5.3-指针实现strcat
- js中对象创建方式及其优势和不足1
- 内存DC也有视口和窗口的
- I007-黑马程序员_毕向东_Java基础视频教程第01天-07-Hello World
- Climbing Stairs
- Portal技术介绍
- android学习笔记-应用程序结构
- 百度坐标拾取
- 【Andord实战】SlideMenu+ViewPagerIndictor滑动侧边双栏+滑动导航栏