永发信息网

char *a = "hello";a是字符指针,还是字符串指针

答案:5  悬赏:80  手机版
解决时间 2021-01-30 16:55
  • 提问者网友:箛茗
  • 2021-01-29 23:52
1、因为 a 定义为char类型,所以为字符指针,虽然a是一个字符串的首址,但实质还是指向一个字符
2、因为 a 是一个字符串的首址,所以为字符串指针

那么char *b= 'h';和string *str = "world";呢?
这个毫无疑问b是一个字符指针,str是一个字符串指针,并且str是指向一个字符串,是该字符串的首址,而首址对应的也是一个字符(似乎和a没什么区别)

上面是一些常见的见解,下面请大家就上面的a、b、str的实质意义进行回答

谢谢ycsxm指出char *b= 'h'; // 这是错误的,正确是 char b='h'; VC6.0中报错如下
error C2440: 'initializing' : cannot convert from 'const char' to 'char *'
同样地string *str = "world";也是错误的
现在修改如下
char tmp = 'h';
char *b = &tmp;
cout<cout<<*b<
char *a = "hello";
cout<cout<<*a<
string str = "world";
string *pstr = &str;
cout<cout<<*pstr<
最佳答案
  • 五星知识达人网友:千夜
  • 2021-01-30 01:18
1. a为 char *类型;a指向串与a指向字符一个意思;
2, char *b= 'h'; // 这是错误的,正确是 char b='h';
全部回答
  • 1楼网友:何以畏孤独
  • 2021-01-30 05:37
正确的是 d srcpcy(a,"hello") 分析 char a[6]="hello"; //在定义的时候初始化,正确。 char a[6]; a[6]=]="hello"; //这个叫赋值,是错误的。
  • 2楼网友:愁杀梦里人
  • 2021-01-30 04:00
char是简单数据类型,string一般是使用类模板实现的c++类,完全不是一个层次上的东西,不要看起来像就以为一样了。
  • 3楼网友:轻熟杀无赦
  • 2021-01-30 03:05
其实讨论这个的意义,首先要明白,指针的概念,指针是什么,其实就是一个地址,指针变量存储的永远是地址。 就拿楼主所说的例子来说: 1、char *a = "hello"; 2、char tmp = 'h'; char *b = &tmp; 3、string *str = "world"; 这3个例子中的 a,b,str,都只是一个指针而已,只是他们的指向不同。 在C语言里面,只有字符指针,没有字符串指针,那么为什么可以用一个字符指针指向一个字符串呢?原因是,一个字符串本身是一个字符数组,一个数组的数组名,就是这个数组的首地址,也就是存放这个数组的开始地址,归根结底这里还是一个地址,而指针变量存储的就是地址。而你会问,为啥要用一个字符指针去存储这个地址呢?那是因为这个字符数组的首地址所指向的值是一个字符,所以需要一个字符指针,其实int *a = (int *)"hello"; 也是合法。 所以 a 的意义是:在C语言中用一个字符指针表示一个字符串的开始,因为C语言中没有字符指针。 char tmp = 'h'; char *b = &tmp; 同上面的解释,tmp变量存储的是一个字符,就相当于再内存中,存放字符‘h’的地址指向的是一个字符,所以可以用 &tmp 取得地址,存储在指针b中,同理其实也可以用一个整型指针 int *b = (int *)&tmp; 针对 string *str = "world"; 这个就是C++中的字符串指针了,名副其实的字符串指针。就像整型指针,字符指针一样地位。 他们各自的意义在于用在不同的地方,实现不同的功能。
  • 4楼网友:孤独入客枕
  • 2021-01-30 01:59
首先回答楼主上面的问题 char* b = "hello",这里给b分配了6个char类型的内存。其中*b,也就是b所指向的内存里面的值是'h',而cout << b;可以表示这个字符串,意思就是从b的首地址开始读下去,得到字符串"hello" string* str跟上面的是不一样的,这个可以赋值string* str = {"hello", "world"};也就是说每个元素都是string类型的,跟char*是不一样的,不过string*可以用char**来代替,但不能使用string类型特有的函数。 对于问题补充 char tmp = 'h'; char *b = &tmp; 首先要知道&tmp是什么,tmp是char类型的,因此&tmp就是char*类型的,上面已经说过char*可以理解为字符串。cout<
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯