C语言:字符数组 + 字符串指针

摘要:
字符数组C语言中没有特定的字符串类型,字符串通常放在字符数组中。除了字符数组之外,C语言还支持通过使用指针直接指向字符串来表示字符串的另一种方法。字符串中的所有字符都连续存储在内存中。str指向字符串的第0个字符。字符串中的每个字符都是char,因此str必须是char*。区分字符数组存储在全局数据区域或堆栈区域中。

字符数组

C语言中没有特定的字符串类型,通常是将字符串放在一个字符数组中。

字符串指针

除了字符数组,C语言还支持另外一种表示字符串的方法,就是直接使用一个指针指向字符串。

char *str = "leetcode";

char *str;
str = "leetcode";

字符串中的所有字符在内存中是连续存放的,str指向的是字符串的第0个字符,即字符串的首地址;字符串中的每个字符的类型都是char,所以str的类型必须是char*

区别

字符数组存储在全局数据区或栈区,全局数据区和栈区的字符串(包括其他数据)有读取和写入权限。

字符串指针存储在常量区,常量区的字符串(也包括其他数据)只有读取权限,没有写入权限。

免责声明:文章转载自《C语言:字符数组 + 字符串指针》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇软件过程模型(软件开发模型)【LeetCode】169. 多数元素下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

文本格式ANSI,Unicode等有什么区别

首先DBCS是亚洲的字符集,包含了ANSI,ANSI也就是ASCII值为0-255之间的字符,当字符为ANSI时,存放于文件中占用的是一个字节。如果是非ANSI的呢,则占用两字节。用VB的ASC函数可以很容易得到一个字符的DBCS值(或是说ANSI值吧)假如一个字符得到的DBCS值为&H1234,当然,这个值是转换成了十六进制的,因为对于磁盘存放来...

Excel中,从字符串中截取指定字符

情况一:提取字符串中的数字 目标:提取C列的全部数字 方法一:Excel中的FIND函数+MID函数   方法:想要从指定位置截取,用到MID函数。因为right和left函数都是从第一个字符或者最后一个字符开始截取,不适合。     MID语法:MID(字符串,截取开始位置,返回字符的个数)     因为截取的开始位置不统一,但是要截取的数字前面都有#...

C语言高级部分总结

C语言高级部分总结 嵌入式ARM 3天前 信息来源于网络 一、内存大话题 1.0、内存就是程序的立足之地,体现内存重要性。 1.1、内存理解: 内存物理看是有很多个Bank(就是行列阵式的存储芯片),每一个Bank的列就是位宽 ,每一行就是Words,则存储单元数量=行数(words)×列数(位宽)×Bank的数量;通常也用M×W的方式来表示芯片的容量(或...

关于C#调用C++ 的DLL传送字符串显示乱码的解决

最近在做一个程序,想把某些功能用C++写成DLL供C#调用,但是在写好DLL用C#传递字符串参数时,在DLL中显示传送过来的字符串是乱码,DLL里的代码根本无法用这些字符串进行其它的处理.为此,花了一天时间在全网翻了一遍,发现没有一篇能完美的解决问题的,当然也有部分的提示是正确的.在经过一翻调试后.终于找到解决问题的办法,在此写下以备忘,也给需要的人参考,...

QT QString类型转换为const char*(toLatin1)

Qstring str = "helloworld"; char *s; QByteArray ba = str.toLatin1(); s = ba.data(); toLatin1、toLocal8Bit都是QString转QByteArray的方法,Latin1代表ASCII,Local8Bit代表unicode。 const char* -- 指...

学习:基于注册表验证的逆向实现

前言:shark恒老师的一个cm2.2的逆向,学习到很多 总结: 1、当有隐藏文件的时候,我们一定要多看看,可能就是作者不想让我们看见的东西,类似以下 2、基于类似注册表之类的验证,我们可以用相应的工具进行监视,比如如下的工具 逆向过程: 1、最开始拿到软件的时候,就是先对其功能界面进行了解,测试发现,输入账号密码提示如下,然后它自动重启,发现还是在原来...