一.函数原型声明: 1.函数声明告诉编译器函数的名称,和如何调用函数(返回类型和参数):函数定义提供了函数的实际主体. 2.强制性的:在C++中,如果函数调用的位置在函数定义之前,则要求在函数调用之前必须对所调用的函数作函数原型声明. 3.在函数声明中,参数名称并不重要,只有参数类型是必须的.即下述两种写法都被允许: int max(int x,int y); int max(int,int); 4.当函数定义 (func.cpp) 与代码主体 (main.cpp) 分开时,在 main.cpp…
这个具体有什么用我也不大清楚,只知道可以这样 #include <iostream> //#include "header1.h" using namespace std; void testIn(){ int add(int num1,int num); //这里在函数内部声明函数 cout<<add(,)<<endl; //调用声明的函数 } int main(){ testIn(); ; } //在外面实现函数 int add(int num1…
基础知识 1.const const 修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的. ; 或 ; //在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再改变它了 const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是像#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干份拷贝. #define PI 3.14159 //常量宏 const double Pi=3.14…
多态 多态性是指对不同类的对象发出相同的消息将返回不同的行为,消息主要是指类的成员函数的调用,不同的行为是指不同的实现: 函数重载 函数重载是多态性的一种简单形式,它是指允许在相同的作用域内,相同的函数名对应着不同的实现: 函数重载的条件是要求函数参数的类型或个数有所不同.对成员函数的重载有以下的三种表达方式 在一个类中重载 在不同类中重载 基类的成员函数在派生类里面重载: 另外,如果是继承类中,子类与父类的成员函数同名的情况称为重定义: 当我们想要指定哪个类的成员函数需要指定是哪个类,使用格式…
这一节主要来介绍TesorFlow的可视化工具TensorBoard,以及TensorFlow基础类型定义.函数操作,后面又介绍到了共享变量和图操作. 一 TesnorBoard可视化操作 TensorFlow提供了可视化操作工具TensorBoard.他可以将训练过程中的各种数据展示出来,包括标量,图片,音频,计算图,数据分布,直方图和嵌入式向量.可以通过网页来观察模型的结构和训练过程中各个参数的变化.TensorBoard不会自动把代码代码出来,其实它是一个日志展示系统,需要在session…
经过大量实验和参考网上的说法得出一个结论: gcc编译器中,函数可以不用提前进行原型声明,编译器会把函数调用同时认为是声明.需要注意的是,由于函数调用的时候并没有写明函数返回值,这是gcc把调用当成声明来用,会默认返回值为int.所以,函数返回值为int类型的函数,在gcc编译器中是可以不用提前进行函数原型声明的.但是!!!为了安全起见和适应不同标准的编译器,强烈建议进行原型声明啊!!!gcc这一点做的很不地道.如果换个编译器会发现错误.…
readn   在Linux中,read的声明为: ssize_t read(int fd, void *buf, size_t count); 它的返回值有以下情形: 1.大于0,代表成功读取的字节数 2.等于0,代表读取到了EOF,一般是对方关闭了socket的写端或者直接close 3.小于0,出现错误. 我们编写一个readn函数,声明与read一致,但是,readn在未出错或者fd没有关闭的情况下,会读满count个字节. ssize_t readn(int fd, void *buf…
学习JS发送自定义键盘(KeyboardEvent)事件的过程中,遇到了一个小难题:单个按键Tab可以正常发送,焦点能够转移到下一个元素,但想实现Shift+Tab,反向移动焦点时,却被DOM3的浏览器兼容性问题难到了. 根据参考资料1(浅谈Javascript事件模拟 - Mr_BackKom - 博客园)的方法,行不通,因为我的浏览器是在Webkit核心下. 再找参考资料2(Document Object Model Events #Events-KeyboardEvent),了解了DOM3…
在网上看到一道题,实现一个memcpy函数,于是查了一下memcpy的函数原型,如下: void* memcpy(char *strDest, const char *strSrc, int Count) { if(strDest == NULL || strSrc == NULL || Count <= 0) return NULL; unsigned char *tempDest; unsigned char *tempSrc; tempDest = (unsigned char *)tem…
open在手册中有两个函数原型, 如下所示: int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); 这样的函数原型有些违背了我们的直觉. C语言是不支持函数重载的, 为什么open的系统调用可以有两个这样的open原型呢? 内核绝对不可能为这个功能创建两个系统调用. 在Linux内核中, 实际上只提供了一个系统调用, 对应的是上述两个函数原型中的第二个.…