)
C入门基础知识二文章目录C入门基础知识二1、指针与引用2、日期与时间3、cerr与clog1、指针与引用C有两种指针运算符一种是取地址运算符另一种是间接寻址运算符*。它们都是单目运算符返回操作数的内存地址如var读作“var的地址”并且还有引用的作用如int var i读作“var是变量i的引用别名”。*返回操作数所指定地址的变量值如*var读作“var的值”。让我们用实例来见证一下指针与引用的区别。C代码如下/* 指针与引用 */intmain(){inti;int*j;//野指针int*kNULL;//空指针chara[]{a,b,c,d,f,e};char*b;//变量b本身有个内存地址。ba[0];//变量b存储了数组a的首地址指向数组a的第一个元素的地址。intp20;//实际变量的声明。int*ip;//指针变量的声明。ipp;//在指针变量中存储p的地址。intm30;//声明简单的变量。intnm;//声明引用变量别名变量的数据类型必须相同。coutiendl;//i表示变量i的内存地址。coutjendl;coutkendl;coutiendl;//声明时如果未初始化系统会自动初始化为0。coutjendl;//表示野指针缺省值默认值是随机的乱指一气。coutkendl;//表示空指针指向NULL值为0。coutendl;coutsizeof(a)endl;//字符型char占1个字节。coutsizeof(b)endl;//64位系统指针占8个字节。coutaendl;//a表示数组a的首地址。coutbendl;//变量b本身的内存地址。coutendl;coutpendl;//获取变量p的值。cout*ipendl;//访问指针中地址的变量值。coutpendl;//p示变量p的内存地址。coutipendl;coutipendl;//存储的变量p的地址。coutendl;coutmendl;coutnendl;system(pause);return0;}运行结果0x62fe14 0x62fe08 0x62fe0000x280680x62fdfa 0x62fdf020200x62fdec 0x62fde0 0x62fdec3030注指针指向另一个内存空间的变量通过指针来访问其指向的内存地址中的内容访问一个变量是间接访问本身有自己的内存空间引用是一个变量的别名定义时必须初始化访问一个变量是直接访问本身不单独分配自己的内存空间引用声明完毕后相当于目标变量名有两个名称即该目标原名称和引用名且不能再把该引用名作为其他变量名的别名空指针(NULL指针)没有存储任何内存地址空指针就是被赋值为0的指针在没有被具体初始化之前其值为0野指针不是NULL指针是指向“垃圾”内存不可用内存的指针野指针的缺省值默认值是随机的乱指一气。2、日期与时间C继承了C的日期与时间操作的结构和函数使用前在C程序引用#include ctime头文件。有四个与时间相关的类型clock_t处理器时钟所使用的时间、time_t返回系统的当前日历时间、size_t格式化日期和时间为指定的格式和tm以C结构体的形式保存日期和时间。tm结构详细请见struct tm。获取当前系统的日期和时间包括本地时间和世界协调时间UTC。C代码如下#includeiostream//输入输出流头文件#includectimeusingnamespacestd;//C标准程序库中的所有标识符都被定义于一个名为std的命名空间namespace中intmain(){time_t nowtime(0);//获取当前系统的当前日期和时间。char*dtctime(now);//把now转换为字符串形式。coutThe number of seconds from 1970 to the present date: nowsendl;//1970到目前的秒数。coutendl;coutLocal Datetime: dt;//本地日期和时间tm*dt2localtime(now);//把now转换为tm结构tm结构以C结构体的形式保存日期和时间。//输出tm结构的各个组成部分。coutYear: 1900dt2-tm_yearendl;coutMonth: 1dt2-tm_monendl;coutDay: dt2-tm_mdayendl;coutTime: dt2-tm_hour:dt2-tm_min:dt2-tm_secendl;coutendl;tm*gmtmgmtime(now);dtasctime(gmtm);coutUTC Datetime: dt;//世界协调时间//输出tm结构的各个组成部分。coutYear: 1900gmtm-tm_yearendl;coutMonth: 1gmtm-tm_monendl;coutDay: gmtm-tm_mdayendl;coutTime: gmtm-tm_hour:gmtm-tm_min:gmtm-tm_secendl;coutendl;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注tm结构以C结构体的形式保存日期和时间。使用箭头—运算符来访问结构体成员。gmtime()和localtime()将time()获得的日历时间time_t结构体转换成tm结构体gmtime()函数是将日历时间转化为世界协调时间UTC并返回一个tm结构体来保存这个时间而localtime()函数是将日历时间转化为本地时间ctime(seconds)和asctime([tupletime])两者的功能都是将时间转换为字符串区别在于两个函数的参数格式不同。3、cerr与clogcerr标准错误流与clog标准日志流即轻缓冲的标准错误流都是一个iostream对象关联到标准错误通常写入到与标准输出相同的设备都与流插入运算符结合使用。默认情况下写到cerr的数据是不缓冲的写到clog的数据是被缓冲的。cerr通常用于输出错误信息与其他不属于正常逻辑的输出内容clog通常用于报告程序的执行信息存入一个日志文件中。使用throw抛出异常并在catch块中捕获该异常并用cerr标准错误流输出。C代码如下doubledivision(inta,intb){if(b0){throwError:the division number is 0.;//抛出异常}return(a/b);}intmain(){intx,y;doublez;cinxy;//cin遇到回车与空格结束读取。try{zdivision(x,y);//保护代码coutzendl;}catch(constchar*msg){//捕获异常cerrmsgendl;}system(pause);return0;}运行结果输入100输出 Error:the division number is0.注cout对象附属到标准输出设备通常是显示屏是与流插入运算符结合使用的cin对象附属到标准输入设备通常是键盘是与流提取运算符结合使用的cin不能读取回车和空格字符遇到就会结束读取所以endl和\t不能在cin中使用只能在cout那实现其功能使用cin可以获得多个从键盘的输入值C代码如下cin x y z;。✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨——以上内容是关于C的入门基础知识二希望对初学者或再次学习者有所帮助基础打扎实不怕风吹雨打 如果以上内容有错误或者内容不全望大家提出我也会继续写好每一篇博文待续未完——文优欢迎观看和提问下一篇C入门基础知识三