中易网

关于字符串指针的问题。

答案:2  悬赏:20  
解决时间 2021-01-31 13:56
#include
class character
{
private:
char * p;
public :
character(char * p)
{
this->p = p;
}

void display()
{
cout<<"输出的字符串为:"< }
};

int main(void)
{
char * p = "Hello";
character ch(p);
ch.display();
return 0;
}

cout<<"输出的字符串为:"<请问这个地方输出字符串的时候为什么不是 * p了? 指针变量p不是存放的是字符串Hello的首地址吗? * p 应该才是字符串的内容啊。 我认为应该写成
cout<<"输出的字符串为:"<< *p <
最佳答案
  • 二级知识专家网友:万千宠爱
  • 2021-01-31 05:02
你改成*p不会报错,输出的会是Hello的第一个字母H,因为p是字符串的首地址,加*就是第一个字符的内容,即H

你对字符串指针的了解不够,在输出时,p代表整个字符串,即
cout << p时会输出字符串的内容,即Hello,cout << p +1时会输出ello
cout << &p时会输出字符串首地址

这是改成*p时的运行结果,Microsoft Visual C++ 6.0编译通过
输出的字符串为:H
Press any key to continue
全部回答
  • 1楼网友:浪女动了心
  • 2021-01-31 05:34

#include <stdio.h> #include <string.h> main() {  char p[256],q[256];  int i,j=0,k,o[100];  puts("请输入字符串string1:");  gets(p);  puts("请输入要查找的字符串string2:");  gets(q);  for(i=0;i<strlen(p);i++)   if(q[0]==p[i])   {    o[j]=i;    j++;   }   printf("出现%d次,位置分别为:",j);      for(k=0;k<j;k++)    printf("%d,",o[k]);   printf("\n\n"); }

不清楚再问我!!!!!!!!!!

我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯