编程论坛
注册
登录
编程论坛
→
C++教室
求大神看看这两个语句那个正确,我一直分不清啊!
蛤蟆001
发布于 2016-09-07 23:56, 2248 次点击
char *mystring="Hello-World!"
char mystring="hello-world!"
这两个=哪个正确?到底是为啥啊?
7 回复
#2
stave_7
2016-09-08 01:55
如果刚学的话,记住哪个对就好了,
#3
rjsp
2016-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
蛤蟆001
2016-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
CrystalFan
2016-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