c++基础(1)

一.命名空间

// 1、命名空间的定义:namespace 命名空间的名称 {}
// 变量、函数、宏定义  
namespace Name1
{
	int a;

	int add(int a, int b)
	{
		return a + b;
	}

#define PI 3.14

	// 命名空间的嵌套
	namespace Name1_1
	{

	}
}

namespace Name2
{
	int a;

	int b;
	
	int c;
}

// 2、命名空间的使用
// 2.1、使用域解析符来引用命名空间中的内容 ::
int main1()
{
	// printf ("hello world\n");
	Name1::a = 10;
	Name2::a = 20;


	printf ("a1 = %d, a2 = %d\n", Name1::a, Name2::a);

	return 0;
}

// 2.2、使用 using 关键字
int main2()
{
	// 将命名空间1打开,后面可以直接使用Name1中的内容,不用再加域解析符
	// 后面但凡没有指明具体命名空间的变量、函数。。。。 默认使用Name1中的
	using namespace Name1;  
	
	a = 50;  // Name1中的a

	Name2::a = 20;  // Name2中的a


	printf("a = %d\n", Name1::a);

	// 后面但凡没有指明具体命名空间的 c, 默认使用Name2中的 c
	using Name2::c;  

	c = 90;
	// b = 30;
	printf ("c = %d\n", Name2::c);

	return 0;
}


// 全局变量a
int a;

// 2.3、命名空间之间命名冲突:使用域解析符解决冲突
// 和全局空间变量命名冲突
int main3()
{
	using namespace Name1;
	using namespace Name2;

	//  a = 10;   有歧义
	Name1::a = 10;  

	// 全局的变量使用默认命名空间的域解析符
	::a = 20;

	return 0;
}
二.标准输入输出

// C++输入输出头文件  
#include <iostream>

// 使用标准命名空间 std
using namespace std;

int main2_1()
{
	// cout  标准输出流的对象   ====>  类似 print 往标准输出打印数据
	// cout 必须放在一行的最左边

	// << 左移操作符 和 cout 一块使用代表数据流向 数据从右边流到左边
	// 左边是标准输出(屏幕)右边是 "hello world" 
	// endl 是 标准库std提供的 ,代表换行
	// cout  支持链式操作
	cout << "hello world" << endl;

	// C语言中的 格式转换在C++还是可以用的
	cout << "123\t456\n";


	int age = 10;
	char *name = "小明";

	// cout 输出基本数据类型不需要 %d等  直接输出变量
	cout << "a = " << age  << ", name = " << name << endl;

	printf ("a = %d, name = %s\n", age, name);
	return 0;
}

// 标准输入流对象 cin  类似scanf
int main2_2()
{
	int a;
	double d;

	// cin是标准输入 =====> 键盘  数据从左边到右边 从键盘到变量
	// 支持链式操作
	cin >> a >> d;

	printf ("a = %d, d = %f\n", a, d);

	return 0;
}
三.寄存器变量

int main3_1()
{
	register int a = 10;

	// 如果对一个寄存器变量进行取地址操作,register声明将无效
	printf ("%p\n", &a);

    return 0;
}
四.结构体加强

#include <iostream>

using namespace std;

struct Student
{
	int age;
	char name[20];
};

int main4_1()
{
	// C语言中 结构体只是一种数据的集合,而不是一种新的数据类型,
	// 所以在定义结构体变量前加struct关键字
	// struct Student stu = {10, "小明"};

	// C++中认为 结构体是一种新的数据类型,可以用来定义变量
	Student stu2 = {20, "小红"};

	cout << "age = " << stu2.age << ", name = " << stu2.name << endl;

    return 0;
}
五.bool类型
#include <iostream>

using namespace std;

// bool 值 只有2种, 一个是真 值位1  一个是假  值为0
// C++种,0表示假,  所有非0都位真

int main5_1()
{
	bool b  = true;
	bool b1 = false;

	cout << "b = " << b << ", b1 = " << b1 << endl;

	int a = 2;
	b = a; 
	cout << "b = " << b << endl;

	b++;
	cout << "b = " << b << endl;

	b = b - 1;
	cout << "b = " << b << endl;

	b = -1;
	cout << "b = " << b << endl;

    return 0;
}

六.三目运算符

#include <iostream>

using namespace std;

int main6_1()
{
	int a = 10;
	int b = 20;


	int c = a > b ? a : b;

	// C++种的三目运算符可以当左值使用
	// C语言返回的是数据的值,不能当左值使用
	// C++返回的是变量本身
	(a > b ? a : b) = 90;   // ===> *(a > b ? &a : &b) = 90;
	printf ("a = %d, b = %d, c = %d\n",a, b, c);

	// 三目运算符当左值使用的时候,表达式不能包含常量
	// (a > b ? 10 : b) = 90; // ===> *(a > b ? &10 : &b) = 90;
    return 0;
}
七.const关键字

#include <iostream>

using namespace std;


int main()
{
	// C++const修饰的是一个常量,常量的值会放到  符号表中
	const int a = 10;

	// 如果对const修饰的变量进行取地址操作,则编译器会在内存中为这个变量分配空间
	// 但是这个空间是不使用的
	int *p =(int *)&a;
	*p = 20;

	printf ("&a = %p\n", &a);
	printf ("p  = %p\n", p);

	printf ("a = %d, *p = %d\n", a, *p);

	int arr[a] = {0};

	return 0;
}







 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值