77问答网
所有问题
char *s = "china";等价于 char *s;s = "china";对不对?
如题所述
举报该问题
推荐答案 2007-08-16
这个问题嘛,最好不这样写,加上const好些:
const char *s="china";
或者:
const char *s;
s="china";
如果不加const,编译也是可以通过的。这是有历史原因的。
"china"在表达式这样执行:在只读内存中非配一块区域存储"china"这个字符串,"china"则表示这个字符数组(它并不是表示指针,虽然在表达式中可以理解为指针!这是因为sizeof("china")的值是数组的长度,而sizeof(指针)的长度是4)。甚至这样的表达式是可以的:"china"[1],它表示字符'h'。
标准规定,关于指针赋值,被赋值的指针(s)所指的对象(即char)应该包含赋值号(=)右边指针所指对象(即const char)的一切限定符。
从这里看,似乎char *s="china"是不合法的,但是在const成为C的关键字之前,大量的代码都是这样写的,所以后来对这种写法给予特赦。但我觉得不应该提倡。
至于lz的问题,执行效果是相同的,可以认为是等价。
参考资料:《C专家编程》
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://77.wendadaohang.com/zd/8YqqW8pG.html
其他回答
第1个回答 2007-08-14
不对!
char* s="china";//字符串常量
s[0]='C';//字符串常量不能改变,程序会报错。
printf("%s",s);
char *s;是定义一个普通指针,然后可为其赋值。
不过,应加上s=new char[6];
char* s;
s=new char[6];
sprintf(s,"%s","china");//赋值
s[0]='C';
printf("%s",s);//成功
第2个回答 2007-08-13
不是这样的
char *s;s = "china";是错误的;
具体可认真学习
C traps andpit falls
第3个回答 2007-08-12
没有错,LZ您是正确的
第4个回答 2007-08-13
这种问题都来问,那你就算问了100万个问题,你还是不会编程
1
2
下一页
相似回答
char
*s
=
"
china
"
;等价于
char
*s;s
= "china"
;对不对?
答:
从这里看,似乎
char
*s=
"
china
"是不合法的,但是在const成为C的关键字之前,大量的代码都是这样写的,所以后来对这种写法给予特赦。但我觉得不应该提倡。至于lz的问题,执行效果是相同的,可以认为是等价。参考资料:《C专家编程》
C语言指针问题
答:
char
*a=”
china
”
; 等价于
char *a; *a=”china” ; 这句最后一个*a不是初始化,所以*a表示解析,代表第一个字符'c'。 *a=”china”. z左边是字符常量,右边是字符串常量。类型不符。 错误 char
*s=
”china”; 等价于 char
*s; s=
”china” ; 最后的s没有使用解析符*,所以它...
char
str[5]
=
"
china
"
等价于
与char str[ ]="china"对吗,为什么?
答:
char
str[ ]="
china
" 是
等价于
char str[6]="china";因为 "china"有六个字符,分别是 'c' 'h' 'i' 'n' 'a' '\0' ,'\0' 是结束符,表示字符串结束
char*s=
"
china
"啥意思
等价于
啥
答:
char *a="
china
";cout<<a<<endl;system("pause");return 0;} 程序输出结果是一个字符串 china 效果和 char a[6]="china"; 在该程序中一样。原因:
char*s=
"china" 定义了一个字符型指针变量s,但是初始化的是一个字符串,于是就相当于将字符串第一个字母的地址给了s,当输出s...
C语言指针基本概念题---在线等
答:
1.char
*
a="
China
"
;等价于char
*a;*a="China";->完全正确.因为a就是一个字符指针,"China"也是,("China"是在常量区,其实是指"China"的首地址.)char str[10]={"China"};等价于char str[10];str[]={"China"};->错误. str[]这样写是字符,比如你可以这样赋值str[0] = 'c'; ...
请问char *a
=
"
china
"
;等价于char
*a
;*
a="china";吗?请说一下原因
答:
不等价,
等价于char
*
a;a
=
china;char
*a = china 是在声明的时候就给a赋值,就是china“的首地址赋值给a,这时候使用*a,表示的只是字符串的第一个字母而已举例测试#include <stdio.h
...原因是什么
char
str[5]
=
{"
china
"}
; 等价于
char str[ ]={"china...
答:
因为
char
str[]={"
china
"}里str="china\0",最后是有个空字符的。所以后一个str里实际有6个元素,而前面一个只有5个元素
大家正在搜
unsigned short范围
const char
设有说明char w;intx
char str
char a='a'
char int
char *s
char s[10]
char *p[10]
相关问题
char *s="china";等价于char *s;s="...
char *s="china";等价于char *s;s="...
char *a=“china”;等价于 char *a;*a...
char *a="china";等价于char *a;*a=...
char *s[5]="china\n"对不对
若char *s=”china”,则输出s ; 的输出值是
C语言设char *S="china";则printf("%...
设char *s=”China”; 则该字符串占有内存空间的...