指针与字符串:(const)char *p2 = "lmj";定义的是一个字符串常量!符串常量,正因为是常量,所以它内部的字符是不允许修改的。
2023-09-14 08:57:16 时间
p span >int main(){
Go值类型和引用类型+作用域+空白标识符+常量 值类型和引用类型 所有像 int、float、bool 和 string 这些基本类型都属于值类型,使用这些类型的变量直接指向存在内存中的值
char *p2 = "lmj";
*p2 = L;
printf("%s", p2);
return 0;
}
程序运行结果:段错误
看起来似乎是可行的,但这是错误代码,错在第2行。首先看第1行,指针变量p2指向的是一块字符串常量,正因为是常量,所以它内部的字符是不允许修改的。
有人可能搞蒙了,这里的第1行代码char *p2 = "lmj";跟第一种方案中的第2行代码char a[] = "lmj";不是一样的么?这是不一样的。
char a[] = "lmj";定义的是一个字符串变量!
char *p2 = "lmj";定义的是一个字符串常量!严格来说,应该写成const char *p2 = "lmj";,前面加个常量修饰符
定义字符串的时候,应该考虑清楚:以后程序是否对字符串的内容进行修改,如果修改,定义为数组形式,若不修改,定义为指针形式,定义为一个字符串常量
Go值类型和引用类型+作用域+空白标识符+常量 值类型和引用类型 所有像 int、float、bool 和 string 这些基本类型都属于值类型,使用这些类型的变量直接指向存在内存中的值
相关文章
- Spring 全家桶之 Spring Web MVC(六)- AJAX & Fileupload
- 函数去抖(debounce)& 函数节流(throttle)总结
- 逻辑与(&&)、逻辑或(||)、按位与(&)、按位或(|)、按位异或(^)、按位取反(~)
- 浅谈 &0xFF操作
- ES 字符过滤器&令牌过滤器
- ATT&CK实战系列——红队实战(三)
- APP性能测试方法&工具
- Web Spider Babel安装 & Ast抽象语法 - 基本使用
- 供应链中常见的“分仓&库存分配”原理
- ECCV 2022 | 普通VR设备实现全身运动捕捉,ETH&Meta为虚拟人物形象添加了下半身
- 如何与B&S建立EDI连接?
- ORA-30455: summary contains VARIANCE without corresponding SUM & COUNT ORACLE 报错 故障修复 远程处理
- C++中的类继承之单继承&多继承&菱形继承详解编程语言
- ssdp_amp DDOS攻击.c
- AMP MySQL升级提升数据库性能的必要之举(amp mysql升级)
- 简单实例处理url特殊符号&处理(2种方法)