社区
C语言
帖子详情
问一下基础问题:大家来讨论一下这种写法是否有错。
hfyou
2003-08-30 10:47:10
char* a = "abc";
有同事认为,编译器会在堆中申请一段内存存放"abc",然后在栈中产生一指针指向"abc"这一段内存。
这种说法正确吗?
偶记得很多年前,在学C时老师就指出指针赋值这种方法是错误的。
但写一段测试程序,却确实如上所述。
...全文
37
16
打赏
收藏
问一下基础问题:大家来讨论一下这种写法是否有错。
char* a = "abc"; 有同事认为,编译器会在堆中申请一段内存存放"abc",然后在栈中产生一指针指向"abc"这一段内存。 这种说法正确吗? 偶记得很多年前,在学C时老师就指出指针赋值这种方法是错误的。 但写一段测试程序,却确实如上所述。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
keiven
2003-08-31
打赏
举报
回复
楼上的说的很清楚了。
1cs1ak1
2003-08-30
打赏
举报
回复
char* a = "abc";//在静态存储区分配
在WINDOWS保护模式下是不能修改静态存储区内容的。任何试图修改其内容的都将错误。
njtu
2003-08-30
打赏
举报
回复
//这样是没有问题的
const char* a = "abc";
//这样在C++中编译通不过,类型不匹配
//在c中可以通过,但是很危险。
char * a = "abc";
//如果你想这样,就会出问题!
strcpy(a,"def");
所以最好这样写
const char * a = "abc" //const int c++
or
char a[4] = "abc"; //c style
eric8231
2003-08-30
打赏
举报
回复
字符串文字量是静态分配的,所以“abc”分配在data segment,而不是heap
char* a ,变量a在栈中分配
在c++的标准中,字符串文字量的类型是const char[ ]。“abc”的类型是const char[4]
所以可以用“abc”给char* a(或const char*)赋值,但试图通过a来改变“abc”就是错的(但这种错误往往在运行时出现)。
sevecol
2003-08-30
打赏
举报
回复
注意这里的不可写和const是有区别的.
首先const只是编译过程的定义,执行的时候可以通过其他的方法写数据
而不可写区域则不一样
sevecol
2003-08-30
打赏
举报
回复
这样是允许的,但是这里a所指的区域是不可写的区域.
hfyou
2003-08-30
打赏
举报
回复
还有,如果是
const char* a = "abc"呢?
从编译器方面讨论是对是错,为什么?
晨星
2003-08-30
打赏
举报
回复
对,不是堆内存。
积木
2003-08-30
打赏
举报
回复
嗯,楼上的说的明白
laazzy
2003-08-30
打赏
举报
回复
abc的空间是静态的全局空间
yzb1000
2003-08-30
打赏
举报
回复
没问题的啊
csj6214499
2003-08-30
打赏
举报
回复
我看没有什么问题
如果是
const char* a = "abc";
那肯定没有什么问题!
bigbigbigsoft
2003-08-30
打赏
举报
回复
如果你的程序不用修改它的值,直接定义:const char a[] = "abc"; 干嘛非要定义指针 *a简单了。
ejiue
2003-08-30
打赏
举报
回复
关键是abc的位置在哪里。
“指针赋值这种方法是错误的”,你老师说的对,不应该这样写。
Jinhao
2003-08-30
打赏
举报
回复
char* a = "abc"; 是不合法的
但为了保持兼容编译器就给它变成了
const char* a = "abc";
换句话说
char* a = "abc"; 就是 const char* a = "abc";
leechildren
2003-08-30
打赏
举报
回复
const char* a = "abc";
//在.net下肯定没问题。
SQL语句从入门到精通迅速提升篇视频课程(Oracle零
基础
版)
使大家快速掌握SQL的
基础
及部分高阶知识,进而熟练的对数据库表、字段进行各种查询、创建、更新、删除操作。 本课程内容可分为三大块: (1)条件查询、排序、分组、模糊查询、聚合函数等
基础
部分讲解...
算法
基础
:NP完全
问
题
本博客所有内容均整理自《算法图解》,欢迎讨论交流~ 相信稍微做过一点学术研究的都不会对“NP完全
问
题
”这个概念感到陌生。它是千禧难题之首。 对于NP完全
问
题
的定义,百度百科是这样给出的:NP完全
问
题
(NP-C
问
题
...
Kotlin的面向对象编程,深入讨论继承
写法
的
问
题
记得是在去年十月份的时候,我在腾讯课堂做了一场线上直播课程,给大家讲解Kotlin的
基础
知识。不过当时我并没有做过提前试讲,只是在PPT上规划了
一下
大体内容,因此时间预估得非常不准确。本来计划是准备直播大概一...
【SQL开发实战技巧】系列(九):一个update误把其他列数据更新成空了?Merge改写update!给你五种删除重复数据的
写法
!
【SQL开发实战技巧】这一系列博主当作复习旧知识来进行写作,毕竟SQL开发在数据分析场景非常重要且
基础
,面试也会经常
问
SQL开发和调优经验,相信当我写完这一系列文章,也能再有所收获,未来面对SQL面试也能游刃有余...
通俗易懂的Python入门
基础
详细教程
文章目录Python 入门第二天Python
基础
语法Python 运算符Python 流程控制Python 格式输出总结 Python 入门第二天 Python
基础
语法 Python 语言与 Perl,C 和 Java 等语言有许多相似之处。但是,也存在一些差异。...
C语言
69,368
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章