3g微网站是什么,nginx进wordpress不能进目录,淘宝运营培训班学费大概多少,设计本推荐表达字符串的方式
1.双引号#xff1a;hello world
2.字符指针#xff1a;char* ptr hello world
3.字符数组#xff1a;char arr[] hello world辨析
项目表示方式代表含义内存分布1“hello world”字符串字面量字符串常量就是数据…表达字符串的方式
1.双引号hello world
2.字符指针char* ptr hello world
3.字符数组char arr[] hello world辨析
项目表示方式代表含义内存分布1“hello world”字符串字面量字符串常量就是数据段或者是rodata段只读数据段2字符指针指向存储字符串的内存起始虚拟地址与所指地址有关字符串常量就是数据段或者是rodata段只读数据段3字符数组在栈区开辟的一块字符字节的内存区域栈区
实践验证
#include iostream
#include cstringusing namespace std;int main(void) {char *ptr datouerzi;char arr[] xiaotoubaba;cout 指针ptr的地址是 static_castvoid*(ptr) endl;cout 指针ptr的所指的是 ptr endl;cout arr的地址是 static_castvoid*(arr) endl;cout arr所指的是 arr endl;
}运行结果如下
指针ptr的地址是0x561a4eeb3ba5
指针ptr的所指的是datouerzi
arr的地址是0x7ffea05062de
arr所指的是datouerziarr的地址是0x7ffea05062de0x7ff开头说明内存空间在栈区。指针ptr的地址是0x561a4eeb3ba5说明在数据段或者是rodata段也就是字符串datouerzi所存储的内存地址。
常见两个错误
1.无法修改指针ptr所指向的字符串常量的内容
char *ptr datouerzi;
strcpy(ptr, xiaotoubaba);运行结果直接报错段错误。原因就是因为ptr指针已经指向了存储在只读数据段的字符串常量datouerzi尝试将 “xiaotoubaba” 复制到只读内存区域会导致段错误因为只读内存区域不能被修改。 有如下两种对应方法 1.使用malloc或者calloc动态的分配内存堆。
char *ptr datouerzi;
ptr static_castchar*(malloc(50));
strcpy(ptr, xiaotoubaba);
...
free(ptr);2.创建字符数组来开辟一块内存栈
char *ptr datouerzi;
char arr1[20] {0};
ptr arr1;
strcpy(ptr, xiaotoubaba);
...arr p; //编译报错 其实是char *const arr