C++第一课:基本语法for Visual Studio 2015[个人见解]

时间:2023-01-10 20:09:46

在学习C++时,或许不了解情况的人会问:到底先学习C语言还是C++,哪个更好?

那么小编的个人见解是:你在学习时别管哪个语言好与不好,是个语言它都是好语言,关键在于你会挖掘其中存在的价值,C++可以说是C语言的升级版本,简而言之,想要学会C++最好先把C语言学会。为什么?

很简单的一个理由:C语言中的知识要点,C++中几乎都有,将C语言的基本用法都会了,再去学习C++时,你会发觉你理解不吃力,说白了,你其实已经学会了一半的C++。

在C语言中基本语法:

#include <stdio.h>

int main ()
{
  //控制台上打印一句话
  printf("hello world!\n");
  return 0;
}

从上面可以看出,头文件属于输出输入流,可以用到输出输入的函数功能。

那么在C++上如何做到呢?

#include <iostream>    //这就是C++的基本输入输出流的头文件

using namespace std;   //加这句的原因,输入输出的基本语法包含在std这个命名空间内,std是一套基本语法的集合,它包含很多,这里主要说到输入输出换行
//using namespace std;  翻译下就是使用命名空间std

/*
  cout<<    输出到控制台
  cin>>     输入到控制台
  endl 换行
*/ int main () {   int number = 0;  //声明一个变量number
  cout<<"请输入一个数:";
  cin>>number;   cout<<"输入的numbere值:"<<number<<endl;

  system("pause"); //暂缓的功能,让控制台停留不动的意思      return 0; }

看下运行的结果,可以看出都能在黑色的屏幕上,也就是控制台上显示你写的内容。

在C++语言中,也可以使用C语言中的头文件,加上头文件,函数不变,不懂的请看C语言部分。

C++语言的基本类型:bool、char、short、int、float、double、long、string;

这里主要讲bool和string两个类型。其余的类型不变。

我们都说非零为真,在C++语言中经常会用到,true就是1,即真;false就是0,即假。

不管C语言还是C++语言中,必须保证一段语句为真,编译器它才会运行。

反观string类型,学会jave语言的会知道,string就是字符串类型,在C++语言之中,它不仅仅表示字符串类型,还涉及到字符串相关的函数集合,这个类型说真的,很重要。下面来看看:

#include <iostream>
#include <cstring>    //这就是C++语言中的字符串类型的头文件,它包含了很多字符串的函数 using namespace std; //请敲代码 int main () {  
  
   string srcstr = "hello";

    //没法在控制台上直接打印srcstr

    coutt << stcstr << endl;

  system("pause");
  return 0;
}

调试时,它会直接报错:

C++第一课:基本语法for Visual Studio 2015[个人见解]

在使用变量保存字符串方面,我们最好还是使用char 类型为好,为什么?C++ string跟java string不同。它不能直接打印,需要加【点c_str()】

#include <iostream>   
#include <cstring>
using namespace std;

int main()
{
  char srcstr[] = "hello";	//[]内不说明多少元素,你可以添加很多字符,如果添加数值,它就有限定,只要超出内存就会报错内存溢出
  cout << srcstr << endl;
  //如果非要使用string 类型的变量赋值为字符串
  string str="helloworld";
  cout<<str.c_str()<<endl;
  system("pause");   return 0; }

既然知道如何使用字符串,那么来看看cstring这个头文件包含了哪些重要的函数,若有不懂的,请看C语言部分。

#include <iostream>   
#include <cstring>
using namespace std;

int main()
{
	char srcstr[] = "hello";	//[]内不说明多少元素,你可以添加很多字符
	cout << srcstr << endl;

	char *deskstr=strcat(srcstr,"world");
	cout << deskstr << endl;
	system("pause");
	return 0;
}

不管对与错,先运行,只有调试才能检验写的代码有无问题。

很明显,语句是没有问题的,但是有异常报错:

C++第一课:基本语法for Visual Studio 2015[个人见解]

它的意思是什么?表示:'strcat':这个函数或变量可能不安全。考虑使用strcats代替。若要禁用弃用,请使用CRT安全无警告。详情请参阅在线帮助。

如果不会使用新标准安全的函数,只要使用cstring的头文件,就加上#define _CRT_SECURE_NO_WARNINGS

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>   
#include <cstring>
using namespace std;

int main()
{
	system("pause");
	return 0;
}

添加好后,再运行看看,不难看出strcat的函数功能是将两个字符串合为一句,意思是将“world”连接到字符串变量srcstr后面,返回赋值于指针deskstr,并打印。

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>   
#include <cstring>
using namespace std;

int main()
{
	char deskstr[11] = {0};
	strcpy(deskstr,"helloworld");
	cout << deskstr << endl;
	system("pause");
	return 0;
}

打印结果helloworld,不难看出,原本的deskstr声明为一串十一个字符的空值,为什么变为有值了?strcpy就是复制的功能函数。写11表示数组类型的基本用法了,它最后都有一个默认加上的'\0'

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>   
#include <cstring>
using namespace std;
/*
  !strcmp(const char *deskstr,const char *srcstr); 非1即为0
  表示两个字符串是否相等
  
  deskstr=srcstr,返回值=0;
  deskstr<srcstr,返回值<0;
  eskstr>srcstr,返回值>0。
*/

int main()
{
  int stag = 0;
  char deskstr[] = "helloworld";
  char srcstr[] = "helloworld.";
  stag = strcmp(deskstr, srcstr);
  if (stag == 0)
  {
    cout << "相同";
    cout << stag << endl;
  }
  else if(stag > 0)
  {
    stag = 1;
    cout << "不相同,第一个字符串大于第二个字符串";
    cout << stag << endl;
  }
  else
  {
    stag = -1;
    cout << "不相同,第一个字符串小于第二个字符串";
    cout << stag << endl;
  }
  system("pause");
  return 0;
}

看看运行结果,它们相等,则返回0,为什么为0,不是说为0为假的吗?这个函数设定的不同,得注意。

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>   
#include <cstring>
using namespace std;

int main()
{
	int number = 0;
	char deskstr[] = "helloworld";
	number =  strlen(deskstr);    //字符个数
	cout << number << endl;
	system("pause");
	return 0;
}

打印结果为10,有人会疑惑,数组上加上11,才能声明定义成功,为什么字符个数不为11呢?strlen()这个函数求的个数不包含'\0'

那么想要求出带‘\0’的字节函数呢?strlen()直接可以使用sizeof(deskstr);

这里还有很多的函数,就不细说了,想要了解的话,可以上网搜索string头文件有哪些函数。

记住:学习时,不要操之过急,或许每天学习的内容不同,但是你今天学到了一点,就说明了你已经在进步了,大树都是从树苗长成的。