为了账号安全,请及时绑定邮箱和手机立即绑定

关于strcpy

关于strcpy

C
Javackx3956272 2016-10-26 19:54:24
#include <stdio.h> #include <string.h> int main() {    char *p="hello";    strcpy(p,"hh");    return 0; } 这个程序为什么会崩溃
查看完整描述

2 回答

已采纳
?
望远

TA贡献1017条经验 获得超1032个赞

字符指针是变量,是数据的地址,它可以指向不同的地址,
但当它指向字符串常量时,它指向的对象是不能修改的。

查看完整回答
反对 回复 2016-10-26
  • Javackx3956272
    Javackx3956272
    那把char *p="hello";改成char arr1[]="hello";为什么就可以了?
  • 望远
    望远
    在ANSI C中,初始化指针时所创建的字符串常量被定义为只读。如果试图通过指针修改这个字符串的值,程序就会出现未定义的行为。在有些编译器中,字符串常量被存放在只允许读取的文本段中,以防止它被修改。 数组也可以用字符串常量进行初始化: Char a[]=”abcdefg”; 与指针相反,由字符串常量初始化的数组是可以修改的。其中的单个字符在以后可以改变。 这是字符指针和字符数组的区别
  • 望远
    望远
    我们可以用字符串常量对字符指针进行初始化。例如,有说明语句: char *str = &quot;This is a string.&quot;; 是对字符指针进行初始化。此时,字符指针指向的是一个字符串常量的首地址,即指向字符串的首地址。 这里要注意字符指针与字符数组之间的区别。例如,有说明语句: char string[ ]=&quot;This is a string.&quot;; 此时,string是字符数组,它存放了一个字符串。 字符指针str与字符数组string的区别是:str是一个变量,可以改变str使它指向不同的字符串,但不能改变str所指的字符串常量。string是一个数组,可以改变数组中保存的内容。
点击展开后面2
?
程序猿天璇

TA贡献22条经验 获得超12个赞

没有输出啊

查看完整回答
反对 回复 2016-10-26
  • 2 回答
  • 0 关注
  • 1316 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信