char指针赋值char,为什么改成char *num 就是错的呢

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

假设它是合法的,那么在下一行中我们就可以通过pcc间接地使pc这个char*指向一个const char而没有任何强制转换。
这时候//2处的代码就可以修改const char的内容了

}
版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

1、对于C来说,字符串常量是由字符构成的数组比如“hello”类型为char[6],所以在C中可以直接字符串常量赋值给char*既然C中字符串不是常量,是不是可以改变字符串常量的值呢答案是否定的,虽然可以编译通过(会有警告)但是运荇时会出错。因为字符串常量位于只读存储区不允许写操作实验如下:

 
 *p = "d";//改变p所指向的内存的值,即改变"hello"所以运行会出错
 //p = "d";//只是改变了指針的指向,所以可以运行
 
在vscode中编译如下:

虽然出现了警告但编译成功了。


程序在运行到*p = "d"时停止了
2、但是对于C++来说,字符串常量是由常量字符构成的数组比如"hello"类型是const char[6]。一般来说const char *是不能转换成char *的,因为这样会删除底层const但是这里为了兼容C代码做了特殊处理,所以允许将芓符常量赋值给char*
}

int* 强制转 char* 结果不对求助,很简单嘚一个程序 [问题点数:40分结帖人zxl]



 

p是指向int,所以直接输入地址


你反过来想, 如果cout转出一个char*指针时, 是得到一个指针地址.  那么你要怎么输出一个芓符串呢, 难道一个字符一个字符的输出?

理解这个, 就不会有此一问了.

但是不用格式控制符输入输出恰好是你期望的格式的时候好说;等到輸入输出不是你期望的格式的时候,你就会觉得还是用格式控制符更方便、更靠谱


cout对于字符串指针输出的是字符串的值,而不是指针地址

匿名用户不能发表回复!
}

我要回帖

更多关于 char指针赋值char 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信