社区
C语言
帖子详情
小的指针问题
realfishhook
2005-09-05 09:30:56
char *p=NULL;
p="abc";
这个代码的执行是不是这样的?
1、p指向空;
2、为"abc"分配空间;
3、将"abc"的首地址给p;
这样写,跟下面这样写有什么区别吗?
char *p=NULL;
char a[]={'a','b','c','\n'};
p=a;
那如果写成这样会不会有问题呢?
#define s "abc"
.....
char *p=NULL;
p=s;
是不是这样不可能行得通?s在预编译的时候,根本没有地址?
谢谢
...全文
618
26
打赏
收藏
小的指针问题
char *p=NULL; p="abc"; 这个代码的执行是不是这样的? 1、p指向空; 2、为"abc"分配空间; 3、将"abc"的首地址给p; 这样写,跟下面这样写有什么区别吗? char *p=NULL; char a[]={'a','b','c','\n'}; p=a; 那如果写成这样会不会有问题呢? #define s "abc" ..... char *p=NULL; p=s; 是不是这样不可能行得通?s在预编译的时候,根本没有地址? 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
vikingemail
2005-09-16
打赏
举报
回复
TO: ZXEOC(似的)
char *p=NULL;
这一句就使得p成为野指针,除非后面给p赋值,使它指向别处,否则它就一直是野指针
请问野指针的定义?
leifen
2005-09-15
打赏
举报
回复
来晚了 呵呵
ZXEOC
2005-09-15
打赏
举报
回复
char *p=NULL;
这一句就使得p成为野指针,除非后面给p赋值,使它指向别处,否则它就一直是野指针。
snowbirdfly
2005-09-15
打赏
举报
回复
char *p=NULL;
这个是给指针初始化为空~~
lin_jianren
2005-09-15
打赏
举报
回复
cjf28040(hero) 在下不懂:为什么p指向一个无效的指针?
goyi
2005-09-09
打赏
举报
回复
好的啊
hjf1010
2005-09-09
打赏
举报
回复
cjf28040(hero) ( ) :而对于一,三。p初始化为null,然后执行p = "abc","abc"会产生一个临时变量。在执行完这句后就释放了。所以p指向一个无效的指针。
为什么三是野指针呢??
#define s "abc"语句在全局静态内存区定义,什么时候会变成野指针??
对于第一种情况,可能会造成野指针,但是不根据楼主程序上下文,你怎么断定就是野指针??
还让被人多看看书,你自己也要多看看书.不要对一些概念一知半解救教训别人.
palm_civet
2005-09-09
打赏
举报
回复
应该是这样吧
XINYONGHUCSDN
2005-09-09
打赏
举报
回复
一和三之间没有区别。
回答楼主的问题,三种方法都能行得通,编译的时候不会有问题!
-----------------------------------
char *p=NULL;
p="abc";
这个代码的执行是不是这样的?
1、p指向空;
2、为"abc"分配空间;
3、将"abc"的首地址给p;
-----------------------------------
是这样的,p指向的是一个常量字符串,也就是说,只要你后面的操作不是会改变p指向的内存内容的操作,就不会有问题,即:p指向的字符串是只读的。
-----------------------------------
这样写,跟下面这样写有什么区别吗?
char *p=NULL;
char a[]={'a','b','c','\n'};
p=a;
-----------------------------------
有区别,此时p指向的内容存储在堆栈中。函数退出或超出其生存期后就无效。
-----------------------------------
那如果写成这样会不会有问题呢?
#define s "abc"
.....
char *p=NULL;
p=s;
是不是这样不可能行得通?s在预编译的时候,根本没有地址?
-----------------------------------
这也行得通。再预处理器处理以后对编译器来说跟一没什么区别!
cjf28040
2005-09-09
打赏
举报
回复
to hjf1010(黑色狂人)
第一,我不是教训你,只是作为前辈的一个意见。
第二,对于你,我不知道你的编程是不是自学的,如果不是你去买块豆腐吧。
#define s "abc"语句在全局静态内存区定义。对于这句话的正确性,如果你是学生你问问你老师去,如果你工作了,千万别问你的上司,你会被辞退的。谦虚一点吧
realfishhook
2005-09-08
打赏
举报
回复
那就是说1,3都不安全了?
2是安全的?
fytzzh
2005-09-08
打赏
举报
回复
calloc malloc动态分配内存
bugebear3
2005-09-08
打赏
举报
回复
'\n'应该为'\0'
cjf28040
2005-09-06
打赏
举报
回复
在c或c++中,字符串常量可以在初始化时设置:
char *p = "abc";
而对于一,三。p初始化为null,然后执行p = "abc","abc"会产生一个临时变量。在执行完这句后就释放了。所以p指向一个无效的指针。
建议对这个观念模糊的人看看编程思想,在那儿能找到答案
getlow
2005-09-06
打赏
举报
回复
请问,什么叫做野指针啊?“野”怎么解析
xxyifan
2005-09-05
打赏
举报
回复
牛死了
qfeng_zhao
2005-09-05
打赏
举报
回复
呵呵,都说完了
zhousqy
2005-09-05
打赏
举报
回复
都说了,一个是常量字符串,在静态区,一个是局部数组,在栈里。
ruiding
2005-09-05
打赏
举报
回复
呵呵 上面两位已经说得很详细了。。
junguo
2005-09-05
打赏
举报
回复
第一种情况下,字符被分配到了静态存储区,是不可以修改它的值的!
第二种情况下,字符分配在了栈上,是可以修改的!
第三种情况,可以编译通过,相当于情况一!
加载更多回复(6)
2小时精通C++智能
指针
智能
指针
可以解决普通
指针
存在的悬垂
指针
、野
指针
、资源泄露等
问题
本教程的主要的演示平台为Qt 4.11和g++ 7.4。学员也可以使用Visual Studio 2017。 教程中从最简单的例子入手,覆盖智能
指针
的常用技术点,并穿插...
指针
数组与数组
指针
详解
指针
数组与数组
指针
详解1....数组
指针
:数组
指针
可以说成是”数组的
指针
”,首先这个变量是一个
指针
,其次,”数组”修饰这个
指针
,意思是说这个
指针
存放着一个数组的首地址,或者说这个
指针
指向一个数组的首地址。 根
C++中的野
指针
问题
1 C和C++中的野
指针
问题
1.1 野
指针
的概念 1.2 野
指针
的由来 1.3 杜绝野
指针
的基本原则 2 C和C++中的常见内存错误 2.1 常见内存错误 2.2 内存操作的基本规则 1 C和C++中的野
指针
问题
1.1 野
指针
的概念 野
指针
的概念...
C语言中的野
指针
问题
C语言中的野
指针
问题
一、野
指针
1、
指针
变量中的值是非法内存地址,进而形成野
指针
2、野
指针
不是NULL
指针
,是指向不可用内存地址的
指针
3、NULL
指针
并无危害,很好判断,也很好调试 4、C语言中无法判断一个
指针
...
C语言
指针
常见
问题
汇总
函数返回值类型 (*
指针
变量名) (函数参数列表);“函数返回值类型”表示该
指针
变量所指向函数的 返回值类型;“函数参数列表”表示该
指针
变量所指向函数的参数列表。那么怎么判断一个
指针
变量是指向变量的
指针
,还是...
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章