关于C++: 为何可以把字符串常量赋给字符指针,而整型常量却不能赋给整型指针

如题所述

像"hello"这样的字符串,它在C/C++里的类型是字符数组:char[6](注意,不是const char[6],因为C语言没有这个类型,C++又要向下兼容C)。而字符数组是可以赋给字符指针的。

但是const char*是不能贱给char*的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-08-20
char *p ="abdc";
int *d = 245;
类型不匹配啊,invalid conversion from `int' to `int*'
245是整型值,不能转化为指针
char *p ="abdc";
int *d = (int *)245;
这样就行了本回答被提问者采纳
第2个回答  2010-08-20
可以的啊,
char a[] = "12121212";
char *b = a;

int b = 11;
int *a = b;
都可以的
,你说的是什么情况啊?
第3个回答  2010-08-20
可以吧,整形的是
*p=a 或者是P=&a都可以

关于C++: 为何可以把字符串常量赋给字符指针,而整型常量却不能赋给整 ...
像"hello"这样的字符串,它在C\/C++里的类型是字符数组:char[6](注意,不是const char[6],因为C语言没有这个类型,C++又要向下兼容C)。而字符数组是可以赋给字符指针的。但是const char*是不能贱给char*的。

为什么别人可以在c++中给char*传递字符串?
首先编译通过不代表对。这是C\/C++为了兼容老代码故意留下的一个漏洞,这里的问题更大的是些这个代码的人没有懂这是不对的,写了错误代码 正确的是StrCopy第二个参数类型应该写成const char*,即使编译能过也不应该写char

c++字符指针与字符串的问题
"abcd"是一个字符串,在内存中肯定有自己的地址空间,char *a = "abcd"就是把这个地址空间赋给a保存的。"abcd"本身就是一个地址,因为在c语言中字符串就是对应于一个指针。int b=5; *a = &b的这个,&b得到的是一个int*,是一个int型的指针,然后还要赋值给*a的话,可以知道a的类型是in...

c++指针和字符串的问题 紧急!!! 高手请进
你对char *型的a 进行"abcdefg"的赋值,"abcdefg"存在静态区,是常量,不能改变,所以下面的a[0]='b'是错的,它在试图改变常量的值。

C语言中将字符串赋值给字符数组的问题
s=ss;错误原因是:不能用赋值语句将一个字符数组直接给一个字符数组赋值,即字符串的复制(c语言中,但是在c++的string 类,上面的赋值是正确的)必须用strcpy()函数实现。而char a[ ]=”toyou“;正确的原因是:因为在声明数组变量的时候就是,为其开辟空间,并为其初始化,这样才是符合c语言语法...

关于C++中string类型变量的赋值
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数...

c++中字符串怎么赋值?
字符串可以赋值给字符指针变量,或者将字符串用字符数组保存。如:char a[10]={'h','e','l','l','o'};3、利用strcpy strcpy是一种C语言的标准库函数,strcpy把含有'\\0'结束符的字符串复制到另一个地址空间,返回值的类型为char*。如:char a[10];strcpy(a, "hello");...

c++当中可不可以用strcpy(字符指针,字符数组);为什么?
我的理解是:p是字符指针,它只保存了第一个字符's'的地址,其它信息都不知道,例如:长度是多少不知道。ch是字符数组,程序一运行就分配了10个空间,地址为ch[0]的地址,长度为10个字符,即使不初始化长度也是10。使用strcpy时可以 strcpy(ch,"sfjaslfjsa"); 但不能strcpy(p,"sfjaslfjsa"); ...

C++字符串指针与字符数组问题,字符数组如何给字符指针赋值
字符指针被赋值? 还是字符指针内的内存被赋值?假如字符串:char strs[255];char *p;p=strs[0]; \\\\指针,*p=strs[0]指针指向内存值被赋值

请问C++的字符串string类为什么数组中不能为变量?
因为数组在C++中是静态存在的,它占用一定的空间(也就是固定长度),在数组当前所在函数运行中是不能改变其长度的(函数结束就消失),一旦改变了长度,数组所在内存区就会出现空缺,导致出错!你在int n=5之前不添加const声明为常变量,系统将认为你“企图”在运行中修改数组长度,所以不予通过。

相似回答