首页 > 代码库 > 指针和字符串常量
指针和字符串常量
指针和字符串常量
首先比较两段代码
代码1
char ch1[] = "hello"; *ch1 = 'H'; //OK ch1[0] = 'H'; //OK printf("%s\r\n",ch1);
代码2
char *ch2 = "world"; *ch2 = 'W'; //运行时错误 ch2[0] = 'W'; //运行时错误 printf("%s\r\n",ch2);
这里的“world”是字符串常量,而“hello”不是。
代码2里,*ch2和ch2[0]其实就是指‘w’,而‘w’是常量自然无法修改!
一般定义成 const char * = “world”;避免上述运行时的错误。
如果想修改字符串的值,就应该定义成代码1的形式!或者如下在堆上申请:
char *s = (char *)malloc(sizeof(char)*6); strcpy(s, "hello"); s[0] = 'H'; printf("%s\r\n", s);这个“hello”也不是一个字符串常量,因为是在堆上申请的,也可以用指针来读和写!
指针和字符串常量
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。