首先看两个例子
一、

二、

这两个例子里面不同的地方就是s的不同,C语言程序在执行的时候内存分配有这样的规则

局部变量在栈中自动生成内存,比如上面所说的s[]就是在栈中生成内存
而s*指向的内存在常量区,就类似于我们在所有程序之前声明char s[100]一样
栈由编译器自动生成释放,而常量区的内存是由操作系统决定的
回到咱们之前说的那个,两份代码返回的s都指向第一个字母的内存地址,第一个由于在常量区,所以一直存在,第二个在函数toStr函数执行之后内存就释放了,所以会报错

而像其他的写法

char *s;
s = “abcdefg”;

其实和第一种方法相同

char *s;
S[0] = ‘a’;

和第二种相同

char *只是一个指针,在第一句的时候还未指向内存

其他情况

这里的segmentation fault是发生在strcat里面的,这里面不能对指针直接操作,因为指针没有指向内存,后面的内存没法存储


这种情况是因为常量区的内存是无法进行修改,通过指针只能访问字符串常量,不能改变这个常量

所以以后有这种情况就思考这几点
1、直接对指针操作,指针都没指向内存肯定不能操作啊
2、试图访问一个不存在的内存地址,地址在栈中还是在哪里啊
3、是否有访问权限,我们不能修改当前执行的.c文件或者二进制文件,还有刚刚说的指针只能访问常量区的内存但是不能修改那样

C语言杂记 0x0B相关推荐

  1. R语言观察日志(part14)--R语言杂记

    学习笔记,有错必纠 文章目录 2020年8月杂记 search函数 未命名 向量化计算 ls函数 2020年8月杂记 search函数 search函数可以查看当前环境已加载的R包: R>sea ...

  2. 《C语言杂记》C语言字符数组与字符指针(指向字符串的指针)详解

    C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,字符数组用法很简单我们还是来你看个例子吧. #include <stdio.h> #include <string ...

  3. 《C语言杂记》详解extern “C“

    在嵌入式开发过程中,你是否经常看到类似下面的代码. #ifdef __cplusplusextern "C" {#endif -- #ifdef __cplusplus } #en ...

  4. 《C语言杂记》理解字符串处理函数 strlen() strcpy() strcat() strcmp()

    在linux C 编程中,我们经常遇到字符串的处理,最多的就是字符串的长度.拷贝字符串.比较字符串等:当然现在的C库中为我们提供了很多字符串处理函数.熟练的运用这些函数,可以减少编程工作量,这里介绍几 ...

  5. 《C语言杂记》C语言结构体和联合体详解

    1结构体概述 C 语言中有很多数据类型,数据类型决定了变量存储占用的空间,以及如何解释存储的位模式.像 int.float.char 等是由C语言本身提供的数据类型,不能再进行分拆,我们称之为基本数据 ...

  6. C语言杂记 0x02

    形参和实参 int getTime(int hour,int minute);getTime(20,30); C语言的这种传递参数的方法叫做call by value 在调用参数时,每个参数都需要得到 ...

  7. C语言杂记 0x01

    字符类型与字符编码 ASCII码中 字符a是97,字符b是98,计算 'a'+1这个表达式,应该按照ASCII码把'a'当做证书值97,然后加1,得到98,然后printf把98这个整数值当做ASCI ...

  8. c语言常量修饰符的作用,C语言杂记(10):关于常量修饰符const

    情况二: 修饰数组变量,即希望这个数组中的每个变量的值不被修改只能被访问. const int a[4]={1,2,3,4}; a[0]=0; //编译报错 情况三: 对形式参量使用const. 首先 ...

  9. 《C语言杂记》编译优化之__builtin_expect

    最近在研究压缩算法的时候,看到了以下代码: #define LIKELY(c) (__builtin_expect(!!(c), 1)) #define UNLIKELY(c) (__builtin_ ...

最新文章

  1. weblogic反序列化漏洞CVE-2018-2628-批量检测脚本
  2. 抢劫(01背包+对立事件)
  3. 二分查找基础概念与经典题目(Leetcode题解-Python语言)二分索引型
  4. html5引擎笔试题,最新!HTML5经典面试题型(附答案)
  5. mfc切换office样式_干货搬运工|计算机二级office必读,裸考也能通关的宝典
  6. 2.Linux/Unix 系统编程手册(上) -- 基本概念
  7. FZU1977 Pandora adventure —— 插头DP
  8. Selenium核心原理及浏览器实战
  9. 怎么将flv格式转换成mp4,四个步骤完成转换
  10. 使用CityBuilder搭建智慧城市3D可视化模型
  11. js怎么显示服务器图片,原生JS上传图片接收服务器端图片并且显示图片(主要描述blob类型)...
  12. UTM(Urchin Tracking Module)简介
  13. Instagram后端架构
  14. 阿里云ECS云服务器1M宽带能干嘛?
  15. linux怎么sftp传文件,Linux 如何使用SFTP命令传输文件
  16. 展示一下基于flask框架的网页播放器的代码
  17. Linux grep -v 命令排除输出
  18. 关于程序员今年的“金三银四”被网友们称为“铜三铁四”这回事.......
  19. 知识扩展----快速阅读
  20. 线径和最大承受功率关系

热门文章

  1. 深度 | 实现100万台iPad覆盖之后,Osmo将向大众消费品牌转型
  2. Linux时间子系统之高分辨率定时器层(HR Timer)
  3. 线上项目开源 -- WeAre(AR 相册)
  4. PHP 源码加密 (zendGuard和ionCube)
  5. 中非经贸常态化 雨花模式跑出新机遇
  6. python中如何定义数组_python中数组是如何使用的?
  7. 小地摊的摊主好热情啊
  8. 浅谈Java Serializable
  9. 打油诗-生活偶尔无奈
  10. 基于layui的表格异步删除,ajax的简单运用