欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C到C++转换学习笔记

程序员文章站 2022-03-08 20:37:34
...

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;
}

输出结果:
C到C++转换学习笔记
跟据结果大家可以看到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;
}

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

下一篇写字符串。