社区
C语言
帖子详情
=的底层实现?
jqx_ah
2009-08-19 10:08:22
“=”操作符的底层实现,谁能提供下
以前记得“=”不能作为字符串的赋值,
现在居然可以,而且没有告警提示。
int main()
{
char *p;
p="iiiiiiiiiiii";
printf("-%s--%d-",p,strlen(p));
}
...全文
85
9
打赏
收藏
=的底层实现?
“=”操作符的底层实现,谁能提供下 以前记得“=”不能作为字符串的赋值, 现在居然可以,而且没有告警提示。 int main() { char *p; p="iiiiiiiiiiii"; printf("-%s--%d-",p,strlen(p)); }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
highball
2009-08-19
打赏
举报
回复
[Quote=引用 7 楼 wissup 的回复:]
字符串常量"abcde"这样的书写方式,实际上表示的是一个指向字符串首字符的常量指针,当然可以赋值给指针了。但是数组名是(指针)常量,所以不能这样赋值。
实际上,C语言中的字符串概念:就是一串以NUL字节结尾的0个或多个字符,其书写方式是用一对双引号包围一串字符,例如:"Hello,",""等。
当一个字符串常量出现在一个表达式中,表达式所使用的值就是这些字符所存储的地址,而不是这些字符本身。所以,你可以把字符串常量赋值给“指向字符的指针”。但是,你不能把字符串常量赋值给字符数组,因为字符串常量是一个指针,而不是这些字符本身。但是,可以使用标准C函数库中的一组函数来对字符串进行复制,完成赋值。
[/Quote]
恩,正解,很详细。
wissup
2009-08-19
打赏
举报
回复
字符串常量"abcde"这样的书写方式,实际上表示的是一个指向字符串首字符的常量指针,当然可以赋值给指针了。但是数组名是(指针)常量,所以不能这样赋值。
实际上,C语言中的字符串概念:就是一串以NUL字节结尾的0个或多个字符,其书写方式是用一对双引号包围一串字符,例如:"Hello,",""等。
当一个字符串常量出现在一个表达式中,表达式所使用的值就是这些字符所存储的地址,而不是这些字符本身。所以,你可以把字符串常量赋值给“指向字符的指针”。但是,你不能把字符串常量赋值给字符数组,因为字符串常量是一个指针,而不是这些字符本身。但是,可以使用标准C函数库中的一组函数来对字符串进行复制,完成赋值。
abcdef0966
2009-08-19
打赏
举报
回复
C语言中无论何时使用字符串常量,都自动产生用一个指向该字符串的指针
char *p;
p="iiiiiiiiiiii";
这里是,编译时在静态存储区分配了空间存储字符串,程序运行到此处,再将字符指针指向该空间,即将字符串常量的指针赋值给变量p
比较
char text[8];
text = "iiiii";
text作为数组名是地址常量,不可被赋值
lzp729
2009-08-19
打赏
举报
回复
""可看做操作符, 作用是取地址
''可看做操作符, 作用是取ASCII值
tompaz
2009-08-19
打赏
举报
回复
常量字符串的赋值
zjw6861982
2009-08-19
打赏
举报
回复
合法的,但是作为实际应用时容易出状况,所以应该摒弃
Paradin
2009-08-19
打赏
举报
回复
就是整数赋值吧
wzyzb
2009-08-19
打赏
举报
回复
顶你
fandouC
2009-08-19
打赏
举报
回复
因为这里是指针,赋值即把字符串存放的首地址赋给指针
从零手写JDK
底层
队列
手写JDK的单向双向链表的
实现
。链表属于java数据结构的一种。大公司面试的必问的。 好记性不如烂笔头。自己手写一个链表的
实现
。一辈子都不会忘记 所涉及知识点->单向链表->...更多java
底层
实现
只是分享
javascript基础的==和===
底层
原理解析
1、null 和 undefied 是相等的,这是js的规定,但是其实在
底层
,undedined的值是派生自null的,所以逻辑等时要返回true 2、如果有一个操作数时NaN,则返回false(NaN不与任何操作符逻辑等或全等,包括NaN) ...
AtomicInteger
底层
实现
原理及应用
多线程不可避免带来了更多的元素同步处理,要在多线程中
实现
同步,经常使用到java.util....其
底层
原理的理解程度对程序员也比较重要,下面一起来看看吧:AtomicInteger
底层
实现
原理及应用https://mp.weixin.q...
HashMap
底层
实现
原理
HashMap 最早出现在 JDK 1.2中,
底层
基于散列算法
实现
,它是一个key-value结构的容器。JDK1.8 版本的HashMap,
底层
数据使用数组 + 链表/红黑树
实现
。Node的数据结构是一个链表结构,红黑树也是基于Node的数据结构...
STL介绍以及其
底层
实现
?包括vector, map, list
2 STL如何
实现
vector、list、map的
底层
机制?1)vector为什么vector的插入操作可能导致迭代器失效?2)list3)map3 vector和list的区别vector插入删除和list有什么区别? 1 介绍一下STL? STL,Standard Template ...
C语言
69,372
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章