指标内容重新设的有关问题
指标内容重新设的问题
各位好,
最近还在复习 C 语言,源码如下,为了确定自己没有误解这个程序,重新叙述这个程序的流程:
首先找了一块连续的内存位址,依序放入
'h'
'e'
'l'
'l'
'o'
'\o'
字符,然後使指标指向此字串符的首位址,也就是 'h'
然後打印出 ptr指标变数的位指,ptr的内容(也就是'h'所在的位址),
ptr所指字符串的值,然後是ptr 首位址的值。
但是当我希望将 "hello" 改成 "jello" 便出现 segmenation fault …想请教是怎麽一回事,
先谢谢大家!
------解决方案--------------------
char *ptr="hello";静态区的,可读不可以改的!
用char ptr[10] = "hello";
各位好,
最近还在复习 C 语言,源码如下,为了确定自己没有误解这个程序,重新叙述这个程序的流程:
首先找了一块连续的内存位址,依序放入
'h'
'e'
'l'
'l'
'o'
'\o'
字符,然後使指标指向此字串符的首位址,也就是 'h'
然後打印出 ptr指标变数的位指,ptr的内容(也就是'h'所在的位址),
ptr所指字符串的值,然後是ptr 首位址的值。
但是当我希望将 "hello" 改成 "jello" 便出现 segmenation fault …想请教是怎麽一回事,
先谢谢大家!
main()
{
char *ptr="hello";
printf("%p--%p--%s--%c\n",&ptr,ptr,ptr,*ptr);
ptr="world";
printf("%p--%p--%s--%c\n",&ptr,ptr,ptr,*ptr);
}
指标
c
------解决方案--------------------
char *ptr="hello";静态区的,可读不可以改的!
用char ptr[10] = "hello";