1.使用cin cout为什么要加using namespace std;?
cin,cout是stl里的东西,stl又是采用std为命名空间的,所以在使用cin,cout的时候必须使用using namespace std;
2.数组的长度的获取
字符数组长度的获取很多人都知道,strlen(array);但是例如整形数组怎么获取长度呢?答案是sizeof(array)/sizeof(array[0]);弱爆了吧。
char *ch = "zengqu";
*(ch+3) = 'w';
通过这样的代码来修改字符‘n’,可行么?当然不行,因为字符串在给字符数组赋值的时候是不允许修改的。
4.C语言中字符串被当作字符数组来处理
“zengqu”在内存中占了7个字节。
5.对于为初始化的字符数组,它的长度是是未知的。
#include<iostream>
using namespace std;
int main()
{
char c2[2] ;
cout<<strlen(c2)<<endl; //'\0不包括'
return 0;
}
这个问题应该Debug版本的问题,因为在Debug版本的Visual Studio,微软默认开启了缓冲区溢出检查。编译器为分配而没有初始化的内存填0xcc,然后在缓冲区结束的时候又会填入特定的数字。在运行的时候,Debug版本的程序会检查缓冲区后面特定的数字是否被修改掉,如果被修改掉了,就说明你的程序存在数组越界写入的情况,这样让编程的人很快定位到错误。所以,Debug版本因为这些填入的特定的数字,导致出来的结果都相同。
6.字符串保存到字符指针里面去,怎么做。直接调用stl里面的函数
#include<iostream> #include<string> using namespace std; int main() { string str; cin >> str; const char *ch = str.c_str(); cout<<strlen(ch)<<endl; }
7.int a=10;和int a(10)有区别么?
第二个借鉴了C++构造函数的语法,
只有C++支持
C只支持前者
效果都是一样的