C语言杂记 0x0B
首先看两个例子
一、
二、
这两个例子里面不同的地方就是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相关推荐
- R语言观察日志(part14)--R语言杂记
学习笔记,有错必纠 文章目录 2020年8月杂记 search函数 未命名 向量化计算 ls函数 2020年8月杂记 search函数 search函数可以查看当前环境已加载的R包: R>sea ...
- 《C语言杂记》C语言字符数组与字符指针(指向字符串的指针)详解
C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,字符数组用法很简单我们还是来你看个例子吧. #include <stdio.h> #include <string ...
- 《C语言杂记》详解extern “C“
在嵌入式开发过程中,你是否经常看到类似下面的代码. #ifdef __cplusplusextern "C" {#endif -- #ifdef __cplusplus } #en ...
- 《C语言杂记》理解字符串处理函数 strlen() strcpy() strcat() strcmp()
在linux C 编程中,我们经常遇到字符串的处理,最多的就是字符串的长度.拷贝字符串.比较字符串等:当然现在的C库中为我们提供了很多字符串处理函数.熟练的运用这些函数,可以减少编程工作量,这里介绍几 ...
- 《C语言杂记》C语言结构体和联合体详解
1结构体概述 C 语言中有很多数据类型,数据类型决定了变量存储占用的空间,以及如何解释存储的位模式.像 int.float.char 等是由C语言本身提供的数据类型,不能再进行分拆,我们称之为基本数据 ...
- C语言杂记 0x02
形参和实参 int getTime(int hour,int minute);getTime(20,30); C语言的这种传递参数的方法叫做call by value 在调用参数时,每个参数都需要得到 ...
- C语言杂记 0x01
字符类型与字符编码 ASCII码中 字符a是97,字符b是98,计算 'a'+1这个表达式,应该按照ASCII码把'a'当做证书值97,然后加1,得到98,然后printf把98这个整数值当做ASCI ...
- c语言常量修饰符的作用,C语言杂记(10):关于常量修饰符const
情况二: 修饰数组变量,即希望这个数组中的每个变量的值不被修改只能被访问. const int a[4]={1,2,3,4}; a[0]=0; //编译报错 情况三: 对形式参量使用const. 首先 ...
- 《C语言杂记》编译优化之__builtin_expect
最近在研究压缩算法的时候,看到了以下代码: #define LIKELY(c) (__builtin_expect(!!(c), 1)) #define UNLIKELY(c) (__builtin_ ...
最新文章
- weblogic反序列化漏洞CVE-2018-2628-批量检测脚本
- 抢劫(01背包+对立事件)
- 二分查找基础概念与经典题目(Leetcode题解-Python语言)二分索引型
- html5引擎笔试题,最新!HTML5经典面试题型(附答案)
- mfc切换office样式_干货搬运工|计算机二级office必读,裸考也能通关的宝典
- 2.Linux/Unix 系统编程手册(上) -- 基本概念
- FZU1977 Pandora adventure —— 插头DP
- Selenium核心原理及浏览器实战
- 怎么将flv格式转换成mp4,四个步骤完成转换
- 使用CityBuilder搭建智慧城市3D可视化模型
- js怎么显示服务器图片,原生JS上传图片接收服务器端图片并且显示图片(主要描述blob类型)...
- UTM(Urchin Tracking Module)简介
- Instagram后端架构
- 阿里云ECS云服务器1M宽带能干嘛?
- linux怎么sftp传文件,Linux 如何使用SFTP命令传输文件
- 展示一下基于flask框架的网页播放器的代码
- Linux grep -v 命令排除输出
- 关于程序员今年的“金三银四”被网友们称为“铜三铁四”这回事.......
- 知识扩展----快速阅读
- 线径和最大承受功率关系