初始化字符指针是把内存中字符串的首地址赋予指针,并不是把该字符串复制到指针中。
char str [ ] = “hello”;
char *p =str
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a[] = "hello world";
char *p = "welcome";
strcpy(a,p);
puts(a);
return 0;
}
结果
但是,strcpy(p,a)就不行。
静态存储区,只有等程序结束了才会释放,一般,全局变量,static局部变量,字符串常量这三种存放在静态存储区。
而指针存放在栈区
在C语言中,当一个字符指针指向一个字符串常量时,不能修改指针指向的对象的值
char *p ="hello world" ;
*p = 'h' ;(错误)