C到C++转换学习笔记

C到C++转换(一)

我是一个正在学习c++的同学,把自己的学习笔记和一些自己的理解记录下来。如果有什么地方写得不对,还希望各位朋友指正。
我写的是有c语言基础之后学习c++ 的学习经历。并不是零基础学习c++。

1.第一个c++程序

首先c++是包容所以c的规则,第一个不同的地方就是头文件。在c里面头文件都是以 .h 结尾,在c++里所有的c头文件都去掉 .h结尾并在前面加上c。例如:include<stdio.h>应该为include< cstdio>

#include<cstdio>

int main()
{
	printf("hello,world");
}

上面的代码依旧是C风格的输出,C++的新的输入输出流库(头文件iostream)将输入输出看成一个流,并用输出运算符 << 和输入运算符 >> 对数据(变量和常量进行输入输出);。下面我们先来看这是如何用的。

#include<iostraam>//标准输入输出头文件

int main()
{
	int a;
	std::cin>>a;//输入终端获取数据放入a变量
	std::cout<<"hello,word"<<endl;//输出终端输出字符串
	std::cout<<a<<endl;//输出变量a的值
}

std::cin :标准输入流对象(键盘)。
std::cout :标准输出流对象(屏幕)。
endl :换行符。

2.命名空间namespace

我也不知道用什么定义这个概念,他的作用是避免命名污染,也就是说避免命名冲突。用符号::表示是哪个命名空间的变量。如上面的std::cin,std::cout.就是c++标准命名空间的输入输出流。

#include <iostream> 
namespace X
{
   int a;
   int g;
}

namespace 	Y
{
   double a;
   double g;
}

int main ()
{
   X::a = 2;
   Y::a = 6.453;
   X::b= X::a +1;
   Y::b= Y::a+1;

   std::cout<<X::b<<Y::b<<endl;

   return 0;
}

如上面代码就有两个命名空间,两个命名空间里面有相同命名的变量,这个时候就要用命名空间来区别他们。但是每次写变量都要加上命名空间以及::符号的话会让代码十分的冗余。所以命名空间的使用有三种方法。

  • using namespace X; 在程序的开始引用整个命名空间。
  • using X::name ; 使用单个变量名称。
  • X::name 每次使用加上前缀。

当然最常用的就是第一种,直接引用整个命名空间。

写到这里我不知写什么了,哈哈哈。写作用域这个东西吧,c++和c这个点上还是有一些区别的。

3.作用域问题

我们都知道{}表示作用域,表示变量的生存周期。这个并没有什么区别,但是在c++里面这个问题很重要。咱先看一段代码再解释它。

int main ()
{
   double a;
   cout << "Input a number: ";
   cin >> a;
   {
      int a = 1; // "int a"隐藏了外部作用域的“double a"       
      a = a * 10 + 4;
      cout << "Local number: " << a << endl;
   }
   cout << "Your number: " << a << endl; //main作用域的“double a" 
   return 0;
}

我相信大家看了代码就一目了然了。在一个域里面可以定义域外部的同名变量。并且域内会隐藏外部的变量。同样的,外部的变量也不会获取到域的变量。

如果出现了局部变量和全局变量重名时,访问全局变量要使用::。

int a=10;
int main()
{
	double a=12.5;
	cout<<::a<<endl;//全局变量a
	cout<<a<<endl;//局部变量
}

关于这个域这里还有一个运用就是在for循环的时候可以在for(),后面括号里面定义变量,在c里面是不可以的。而且这个变量的作用域就仅在这个for循环语句里面。

#include<iostram>
using namespace std;
int main()
{
	int sum=0;
	for(int i=0;i<10;i++)//在for语句里面定义变量作用域仅在循环体内。
		sum+=i;
	cout<<sum<<endl;
	//cout<<i<<endl;这里输出i就是不对的了
}

4.引用 int&a=b

首先我对引用的感觉就是这是个好东西啊,大家回想一下c语言函数传参时。如果要让函数能够改变实参的值。那就得传实参的地址对吧,c++里面不用啦,传递实参本身也能改变它的值啦,这就是引用。
那引用是个啥,它是一个变量的别名,比如你有个小名。但是这两个名字都表示你。同样通过引用给变量取别名。表示的是一个变量,是同一块地址空间的名字。

  • 1.简单使用
    定义方法:变量的引用和变量必须是同种类型,定义是在类型后面加上&符号。如int&a=b;
#include<iostream>
using namespace std;
int main()
{
	int a=5;
	int &b=a;//b是a的引用(别名) 注意:引用必须初始化,不能单独存在,也不能改变指向,
	b=10;
	cout<<b<<endl;
	cout<<a<<endl;
	cout<<&a<<endl;
	cout<<&b<<endl;
}

输出结果:
输出结果
跟据结果大家可以看到a和b完全是同一个东西。
注意:引用必须初始化,不能单独存在,也不能改变指向

  • 2.作为形参
#include <iostream>
#include <string>
using namespace std;
void swap(int& a, int& b)
{
	a = a+b;
	b = a-b;
	a = a-b;
}

int main()
{
	int a = 10, b = 20;
	swap(a, b);
	cout<<a<<" "<<b<<endl;
	return 0;
}

这段程序可以看到,引用作为函数形参。表示形参和实参实际上是同一个对象,在函数中对形参的修改也就是对实参的修改

下一篇写字符串。

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值