初学c++,cout英文为什么是一个上下箭头的字符,谢谢
#include <iostream.h>
#include <string.h>
void main()
{
char *s[]={ "c ", "cccce ", "ccc "};
char *p=s[0];
char c;
for(int i=1;i <5;i++)
if(strcmp(p,s[i]) <0)
p=s[i];
cout < < "the max string is " < <p < < "|| " < <endl;
c=*p;
for(int j=0;j <strlen(p);j++)
if(c <*p++)
c=*p;
cout < < "the max char is: " < <c < < "|| " < <endl;
}
结果:the max string is? X //这个X是一个上下的箭头
[解决办法]
数组越界了吧
[解决办法]
void main()
{
char *s[]={ "c ", "cccce ", "ccc "};
char *p=s[0];
char c;
//for(int i=1;i <5;i++)//这里越界
for(int i=1;i <3;i++)
if(strcmp(p,s[i]) <0)
p=s[i];
cout < < "the max string is: " < <p < < "|| " < <endl;
c=*p;
for(int j=0;j <strlen(p);j++)
{
//if(c <*p++)//这里先把指针后移了
// c=*p;//这里的c得到了后一个字符
if(c <*p)
c=*p;
p++;
}
cout < < "the max char is: " < <c < < "|| " < <endl;
}
[解决办法]
请教一下:可以把
char *s[]={ "c ", "cccce ", "ccc "};
char *p=s[0];
写成:
char (*s)[2]={ "c ", "cccce ", "ccc "};
char *p=s;
吗?
[解决办法]
char *s[]={ "c ", "cccce ", "ccc "};
char *p=s[0];
不可以写成如下格式:
char (*s)[2]={ "c ", "cccce ", "ccc "};//无法通过编译的
char *p=s;
1.char *s[] s首先是数组(数组名),该数组中存放的是指向字符类型的指针。
2.char (*s)[2] s首先是指针,指向拥有两个元素的数组。
[解决办法]
To LS:
------------------------------------------------
char *s[]={ "c ", "cccce ", "ccc "}; // 声明一个数组,每个元素都是 char 的指针;
char *p=s[0]; // 用数组的首元素初始化 *p;
------------------------------------------------
char (*s)[2]={ "c ", "cccce ", "ccc "}; // 声明一个数组指针;
char *p=s; // 类型不匹配; 试图将一个指向数组的指针赋予 char 型指针;
[解决办法]
strlen返回值是unsigned , 你定义的j 是signed ,比较的时候做了隐式转换
[解决办法]
这么说,你那个书貌似比较差。建议换C++ Primer。