1.命名空间的嵌套
#include <iostream>
using namespace std;
int aaaa;//不赋值 直接输出它的值的时候,因为是全局变量 所以默认给了值 0,如果是局部变量 那么就是一个垃圾值
//在C中全局变量可以重复定义 后定义的覆盖前面的 但是 C++不行 检测机制更加严格
namespace A
{
int a = 1;
void print()
{
cout << "namespace a" << endl;
}
}
namespace B
{
int a = 2;
void print()
{
cout << "namespace b" << endl;
}
}
namespace C
{
namespace D
{
struct test
{
int x;
};
}
}
2.regist的变量
register int aa;
cout << "a的地址是 " << &aa << endl;//这时候给的地址是在内存中随机分配的一个地址
//因为本来寄存器变量是不存在地址的
//但是G++默认这种取地址行为是可以的 所以自动给你分配了一个内存地址
int a1 = 1, b1 = 2;
(a1 > b1) ? a1 : b1 = 10;
//作为一个三目运算符 在C++中的运算结果 返回的是变量 b1
//所以可以对其赋值
cout << "b1 = " << b1 << endl;
//但是在C中三目运算符 运算结果 返回的是 数值常量 2,所以不可以进行赋值
cin.get();//等待一个输入再退出程序 也可以用system("pause"); 多+一个 #include <windows>
return 0;
}
*/
3.//指针的引用
/*
#include <iostream>
#include <cstring>
#pragma warning (disable:4996)//注意:因为vs2013版本级以后不支持strcpy这个函数 unsafe加这个去除警告(error
using namespace std;
void initMemory(char *&ptr)
{
ptr = (char *)malloc(100);
}
int main()
{
char *str = NULL;
initMemory(str);
strcpy(str,"hello");
cout << "str = " << str << endl;
cin.get();
return 0;
}
*/
4.在C艹中define和const的区别。
前者作用域是从这一行往下。
后者作用域可为局部变量。
#include <iostream>
using namespace std;
void print()
{
const int a = 1;
#define b 2
cout << a << " " << b << endl;
#undef b
}
int main ()
{
print();
// cout << a << endl;
cout << b << endl;
return 0;
}
5.
//函数指针指向重载函数
#include <iostream>
using namespace std;
int add(int a, int b)
{
return a + b;
}
float add(float a, float b)
{
return a + b;
}
int main()
{
int a = 1;
int b = 2;
float c = 1.1;
float d = 2.0;
cout << "add(a, b) = " << add(a, b) << endl;
cout << "add(c ,d) = " << add(c, d) << endl;
int(*p)(int, int);//函数指针指向函数add(int型的)
p = add;
p(2 , 3);
float(*q)(float, float);//同上
q = add;
q(2.1, 3.1);
cin.get();
return 0;
}