ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python字符串和C字符数组之间的相似性

2019-11-27 20:57:46  阅读:117  来源: 互联网

标签:c-3 python


我试图在python字符串和将C字符数组分配给字符串文字之间建立联系.
例如:

char* word="Hello";
        word="Now";

分配给放置在只读存储器位置中的字符串“ Hello”.现在,将单词重新分配为“ Now”意味着现在为字符数组分配了一个对应于“ Now”的存储位置.

在python中,偶数(显然还有字符串)的工作方式与之相似,先将值2分配给内存位置,然后再将值3分配给内存位置.

 a=2
 a=3

这与C相反,在C中,几乎所有变量分配都包含变量所分配的值.我在这里做一个很好的比较吗?

解决方法:

在C中,char *是类型“指向字符的指针”.指针就像一个“句柄”,使您可以访问值本身.当分配word =“ Now”;时,您将更改句柄,而不是字符串的字符. “ Hello”和“ Now”都仍以字节组形式存在于常量存储中.

Python隐藏了它的更多功能,但在内部,其内置的字符串引用本质上就像指针.因此,您的观察在一定程度上是正确的.

这些语言的字符串的最大区别在于,在Python中,所有字符串都是不可变的. C使您可以(通过赋值)操纵(非恒定)字符串中的字符.例如:

char word [] = "Hello";
// word is now the name of a 6-character (including final null) mutable string
word[0] = 'h';
// Now word has the value "hello".

在Python中,您将必须创建一个全新的字符串:

word = 'h' + word[1:]

在这里,组成新字符串的字节与word的字节不同.

没错,Python具有“引用语义”.一切都像在操作一个句柄而不是一个值.

>>> a=[1]
>>> b=a
>>> a
[1]
>>> b
[1]
>>> a[0]=5
>>> a
[5]
>>> b
[5]

在这里,赋值b = a复制了列表的句柄或引用.列表本身未复制.这很明显,因为更改a的第一个元素也更改了b.

标签:c-3,python
来源: https://codeday.me/bug/20191127/2076940.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有