C++入门基础知识(二)
2026/8/25 7:47:33 网站建设 项目流程

C++入门基础知识(二)


文章目录

  • C++入门基础知识(二)
    • 1、指针与引用
    • 2、日期与时间
    • 3、cerr与clog

1、指针与引用

👉👉C++有两种指针运算符,一种是取地址运算符'&',另一种是间接寻址运算符'*'。它们都是单目运算符,&返回操作数的内存地址,如&var读作“var的地址”,并且&还有引用的作用,如int& var = i读作“var是变量i的引用(别名)”。*返回操作数所指定地址的变量值,如*var读作“var的值”。


🍓🍓让我们用实例来见证一下指针与引用的区别。C++代码如下:

/* 指针与引用 */intmain(){inti;int*j;//野指针int*k=NULL;//空指针chara[]={'a','b','c','d','f','e'};char*b;//变量b本身有个内存地址。b=&a[0];//变量b存储了数组a的首地址,指向数组a的第一个元素的地址。intp=20;//实际变量的声明。int*ip;//指针变量的声明。ip=&p;//在指针变量中存储p的地址。intm=30;//声明简单的变量。int&n=m;//声明引用变量,别名,变量的数据类型必须相同。cout<<&i<<endl;//&i表示变量i的内存地址。cout<<&j<<endl;cout<<&k<<endl;cout<<i<<endl;//声明时如果未初始化,系统会自动初始化为0。cout<<j<<endl;//表示野指针,缺省值(默认值)是随机的,乱指一气。cout<<k<<endl;//表示空指针,指向NULL,值为0。cout<<endl;cout<<sizeof(a)<<endl;//字符型char占1个字节。cout<<sizeof(b)<<endl;//64位系统,指针占8个字节。cout<<&a<<endl;//&a表示数组a的首地址。cout<<&b<<endl;//变量b本身的内存地址。cout<<endl;cout<<p<<endl;//获取变量p的值。cout<<*ip<<endl;//访问指针中地址的变量值。cout<<&p<<endl;//&p示变量p的内存地址。cout<<&ip<<endl;cout<<ip<<endl;//存储的变量p的地址。cout<<endl;cout<<m<<endl;cout<<n<<endl;system("pause");return0;}

🆚🆚运行结果:

0x62fe14 0x62fe08 0x62fe0000x280680x62fdfa 0x62fdf020200x62fdec 0x62fde0 0x62fdec3030

注:

  1. 指针,指向另一个内存空间的变量,通过指针来访问其指向的内存地址中的内容,访问一个变量是间接访问,本身有自己的内存空间;
  2. 引用是一个变量的别名,定义时必须初始化,访问一个变量是直接访问,本身不单独分配自己的内存空间,引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名;
  3. 空指针(NULL指针)没有存储任何内存地址,空指针就是被赋值为0的指针,在没有被具体初始化之前,其值为0;
  4. 野指针不是NULL指针,是指向“垃圾”内存(不可用内存)的指针,野指针的缺省值(默认值)是随机的,乱指一气。

2、日期与时间

👉👉C++继承了C的日期与时间操作的结构和函数,使用前在C++程序引用#include <ctime>头文件。有四个与时间相关的类型:clock_t(处理器时钟所使用的时间)time_t(返回系统的当前日历时间)size_t(格式化日期和时间为指定的格式)tm(以C结构体的形式保存日期和时间)tm结构详细请见struct tm。

🍎🍎获取当前系统的日期和时间,包括本地时间和世界协调时间(UTC)。C++代码如下:

#include<iostream>//输入输出流头文件#include<ctime>usingnamespacestd;//C++标准程序库中的所有标识符都被定义于一个名为std的命名空间namespace中intmain(){time_t now=time(0);//获取当前系统的当前日期和时间。char*dt=ctime(&now);//把now转换为字符串形式。cout<<"The number of seconds from 1970 to the present date: "<<now<<"s"<<endl;//1970到目前的秒数。cout<<endl;cout<<"Local Datetime: "<<dt;//本地日期和时间tm*dt2=localtime(&now);//把now转换为tm结构,tm结构以C结构体的形式保存日期和时间。//输出tm结构的各个组成部分。cout<<"Year: "<<1900+dt2->tm_year<<endl;cout<<"Month: "<<1+dt2->tm_mon<<endl;cout<<"Day: "<<dt2->tm_mday<<endl;cout<<"Time: "<<dt2->tm_hour<<":"<<dt2->tm_min<<":"<<dt2->tm_sec<<endl;cout<<endl;tm*gmtm=gmtime(&now);dt=asctime(gmtm);cout<<"UTC Datetime: "<<dt;//世界协调时间//输出tm结构的各个组成部分。cout<<"Year: "<<1900+gmtm->tm_year<<endl;cout<<"Month: "<<1+gmtm->tm_mon<<endl;cout<<"Day: "<<gmtm->tm_mday<<endl;cout<<"Time: "<<gmtm->tm_hour<<":"<<gmtm->tm_min<<":"<<gmtm->tm_sec<<endl;cout<<endl;system("pause");return0;}

🆚🆚运行结果:

The number of seconds from1970to the present date: 1644464440s Local Datetime: Thu Feb1011:40:402022Year:2022Month:2Day:10Time:11:40:40 UTC Datetime: Thu Feb1003:40:402022Year:2022Month:2Day:10Time:3:40:40

注:

  1. tm结构以C结构体的形式保存日期和时间。使用箭头—>运算符来访问结构体成员。
  2. gmtime()localtime()time()获得的日历时间time_t结构体转换成tm结构体,gmtime()函数是将日历时间转化为世界协调时间(UTC),并返回一个tm结构体来保存这个时间,而localtime()函数是将日历时间转化为本地时间;
  3. ctime(seconds)asctime([tupletime])两者的功能都是将时间转换为字符串,区别在于两个函数的参数格式不同。

3、cerr与clog

👉👉cerr(标准错误流)clog(标准日志流,即轻缓冲的标准错误流)都是一个iostream对象,关联到标准错误,通常写入到与标准输出相同的设备,都与流插入运算符<<结合使用。默认情况下,写到cerr的数据是不缓冲的,写到clog的数据是被缓冲的。cerr通常用于输出错误信息与其他不属于正常逻辑的输出内容,clog通常用于报告程序的执行信息,存入一个日志文件中

🍋🍋使用throw抛出异常,并在catch块中捕获该异常并用cerr标准错误流输出。C++代码如下:

doubledivision(inta,intb){if(b==0){throw"Error:the division number is 0.";//抛出异常}return(a/b);}intmain(){intx,y;doublez;cin>>x>>y;//cin遇到回车与空格结束读取。try{z=division(x,y);//保护代码cout<<z<<endl;}catch(constchar*msg){//捕获异常cerr<<msg<<endl;}system("pause");return0;}

🆚🆚运行结果:

输入:100输出: Error:the division number is0.

注:

  1. cout对象附属到标准输出设备,通常是显示屏,是与流插入运算符<<结合使用的;
  2. cin对象附属到标准输入设备,通常是键盘,是与流提取运算符>>结合使用的,cin不能读取回车和空格字符,遇到就会结束读取,所以endl'\t'不能在cin中使用,只能在cout那实现其功能,使用cin可以获得多个从键盘的输入值,C++代码如下:cin >> x >> y >> z;

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

——>以上内容是关于C++的入门基础知识(二),希望对初学者或再次学习者有所帮助,基础打扎实,不怕风吹雨打! 如果以上内容有错误或者内容不全,望大家提出!我也会继续写好每一篇博文!
👍👍👍

待续未完
——文优

🙊🙊🙊

欢迎观看和提问!!!
👏👏👏

下一篇:C++入门基础知识(三)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询