社区
C语言
帖子详情
问一下基础问题:大家来讨论一下这种写法是否有错。
hfyou
2003-08-30 10:47:10
char* a = "abc";
有同事认为,编译器会在堆中申请一段内存存放"abc",然后在栈中产生一指针指向"abc"这一段内存。
这种说法正确吗?
偶记得很多年前,在学C时老师就指出指针赋值这种方法是错误的。
但写一段测试程序,却确实如上所述。
...全文
42
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语句教程,按照从浅入深的模式讲解工作中常用的SQL
写法
、函数、字段处理技术等。使大家快速掌握SQL的
基础
及部分高阶知识,进而熟练的对数据库表、字段进行各种查询、创建、更新、删除操作。 本课程内容可分为三大块: (1)条件查询、排序、分组、模糊查询、聚合函数等
基础
部分讲解; (2)多表关联、子查询、常用字符、数字、日期处理技术等常用技术讲解; (3)对表、表内容、表字段的操作讲解。
算法
基础
:NP完全
问
题
本博客所有内容均整理自《算法图解》,欢迎讨论交流~ 相信稍微做过一点学术研究的都不会对“NP完全
问
题
”这个概念感到陌生。它是千禧难题之首。 对于NP完全
问
题
的定义,百度百科是这样给出的:NP完全
问
题
(NP-C
问
题
),是世界七大数学难题之一。 NP的英文全称是Non-deterministic Polynomial的
问
题
,即多项式复杂程度的非确定性
问
题
。简单的
写法
是 NP=P?,
问
题
就在这个
问
号...
Kotlin的面向对象编程,深入讨论继承
写法
的
问
题
很多人可能都不知道,或者是已经忘记这件事了,但是我自己承诺过要写的东西,我是不会忘记的。 记得是在去年十月份的时候,我在腾讯课堂做了一场线上直播课程,给大家讲解Kotlin的
基础
知识。不过当时我并没有做过提前试讲,只是在PPT上规划了
一下
大体内容,因此时间预估得非常不准确。本来计划是准备直播大概一个半小时,最后直播了三个小时还没讲完,因此为了赶时间不得不砍掉了一些本来要讲的内容。 当时提到了一个Kotlin在继承时括号书写的
问
题
,这部分内容比较有疑惑性,不太利于初学者理解。本来我是计划在直播时要
【SQL开发实战技巧】系列(九):一个update误把其他列数据更新成空了?Merge改写update!给你五种删除重复数据的
写法
!
本篇文章讲解的主要内容是:***你有没有经历过一个update把其他列数据清空了、使用merge更新合并记录、删除违反参照完整性的记录、给你五种删除重复数据的
写法
*** 【SQL开发实战技巧】这一系列博主当作复习旧知识来进行写作,毕竟SQL开发在数据分析场景非常重要且
基础
,面试也会经常
问
SQL开发和调优经验,相信当我写完这一系列文章,也能再有所收获,未来面对SQL面试也能游刃有余~。
通俗易懂的Python入门
基础
详细教程
文章目录Python 入门第二天Python
基础
语法Python 运算符Python 流程控制Python 格式输出总结 Python 入门第二天 Python
基础
语法 Python 语言与 Perl,C 和 Java 等语言有许多相似之处。但是,也存在一些差异。 本文我们将来学习 Python 的
基础
语法、变量和相关运算,让你快速学会 Python 编程。 1.Python 标识符 在写程序时经常要用到(标识符)变量,那么变量有什么作用呢? 保存表达式运算的结果至内存,方便复用或更改
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章