数组字符串和指针字符串
2021-01-16 10:16
标签:字符串 font new 字符串常量 style mes char s 直接 mil 在C语言中,表示一个字符串我们可以用数组如char str[] = "abc",也可以用指针char *str = "abc",那二者有何区别呢? 1、数组字符串存放在全局数据区或栈区,可读可写;指针字符串存放在常量区,可读不可写。 数组字符串: 指针字符串: 2、字符串常量不可以直接赋值给数组名;但可以直接赋值给字符指针。 数组字符串: 指针字符串: 之所以产生这种现象,是因为双引号在编译过程中提供了如下功能: (1)申请了内存空间(常量区),存放字符串; 数组字符串和指针字符串 标签:字符串 font new 字符串常量 style mes char s 直接 mil 原文地址:https://www.cnblogs.com/programmer-home/p/12925704.html
char str[] = "abcd";
puts(str); // 可读
str[0] = ‘m‘; // 可写
char *str = "abcd";
puts(str); // 可读
str[0] = ‘m‘; // 错误,不可写
char str[10];
str = "abcd"; // 错误,不可赋值。但可以用strcpy(str, "abc")来赋值。
char *str;
str = "abcd"; // 正确
(2)在字符串末尾加上‘\0‘;
(3)返回一个地址;
数组str[10]和指针*str中的str都是指地址,但数组的地址是一个常量,所以不可进行赋值,即将一个值(地址,由双引号申请的地址)赋给一个常量(常量地址);但指针是一个变量,所以可以被赋值。
上一篇:必须返回对象时,别妄想返回其reference 【Effective C++ 条款21】
下一篇:A new type of blockchain for secure message exchange in VANET