注册 登录
编程论坛 C++教室

求大神看看这两个语句那个正确,我一直分不清啊!

蛤蟆001 发布于 2016-09-07 23:56, 2248 次点击
char *mystring="Hello-World!"  
char mystring="hello-world!"
这两个=哪个正确?到底是为啥啊?
7 回复
#2
stave_72016-09-08 01:55
如果刚学的话,记住哪个对就好了,
#3
rjsp2016-09-08 08:23
"Hello-World!" 的类型是 const char [13],是个 literal
所以正确的写法是
const char (&mystring)[13] = "hello-world!";
考虑到数组可隐式降级为指针,下面两种也是合法的
const char* s = "hello-world!";
char* s = "hello-world!"; // 在过去是合法的(但*s是未定义行为),在新标准中已经禁止了
不是转化而是赋值的话,正确的还有
char mystring[13] = "hello-world!";
const char mystring[13] = "hello-world!";
char mystring[] = "hello-world!";
const char mystring[] = "hello-world!";
char mystring[任意大于等于13的数值] = "hello-world!";
const char mystring[任意大于等于13的数值] = "hello-world!";
#4
蛤蟆0012016-09-08 09:25
回复 2楼 stave_7
不懂是为啥啊?麻烦您给我简单说一下!
#5
BBOY愿愿2016-09-09 13:01
第一个 C语言中是将 字符串  以字符数组形式来处理     一维的数组名  就是数组元素的首地址(也就是指针 形式是 数据类型 *变量名) 所以第一个是对的
第二个 不能将一个字符串直接赋值给一个这种变量char mystring   但是可以这样char mystring[]="hello-world!"
#6
书生牛犊2016-09-09 13:15
char *mystring声明了一个指向字符类型的指针变量叫做mystring
char mystring声明了一个字符变量叫做mystring
#7
CrystalFan2016-09-09 16:13
回复 3楼 rjsp
这个解答太全面了
#8
为瞬间停留2016-09-12 10:59
以下是引用蛤蟆001在2016-9-7 23:56:08的发言:

char *mystring="Hello-World!"   
char mystring="hello-world!"
这两个=哪个正确?到底是为啥啊?

char表示一个字符,  你后面是一个字符串,第二个不对呀。
第一个表示mystring是一个字符指针,可以理解为字符串的首地址。
1