C++的函数模板是通用的函数描述。怎么理解呢?通俗地讲,通过使用泛型来定义函数,泛型指的是其可用具体的类型(int/double)来替换,通过将类型作为参数传递给模版,可以使编译器生成该类型的函数。当然由于模版允许以泛型的方式来编写程序,因此有时也被称为通用编程。函数模版定义我们通过一个简单的例子来看看函数模版的存在的意义:假设我们有一个函数来交换两个int类型的值:void swap_or(in
类和对象C++对象模型和this指针成员变量和成员函数的存储C++中的成员变量和成员函数是分开存储的,只有非静态成员变量才属于类的对象上class Person{ int m_Age;//非静态成员变量 static int m_B;//静态成员变量 void func(){ //不属于类的对象上 } static void func2(){} };
类和对象C++是一门面向对象的语言,提到面向对象就不得不提到三大特点:封装、继承、多态。首先来看第一大特点:封装封装在C++中类使用关键字class修饰 class [类名]{ }举个例子:以学生类为例 class Students{ //权限 public: //类中的属性和行为都成为成员,成员变量、成员属性 //成员函数、成员方法。 //属性 stri
由于之前学过C语言、java语言,所以这一版笔记不会把所有内容都记录下来,仅记录学习过程中不太清楚的,或者忘记的。比较基础的就不再进一步记录了。1.关于字符串的补充在之前的C语言学习中,已经详细的学习了C的各类数据类型,无论是整型还是浮点型,以及对应的作用范围,这里C++相较于大部分C的数据类型的声明,基本都还可以沿用,但是也多了一些优化。类似于字符串的命名,我们既可以使用C风格下面的命名方式:c
因为最近面临找工作的问题,所以一边学一边复习有关c++的内容
C语言最后一个部分,关于程序的预处理的学习与记录。程序的环境通常来讲,C语言在任何一种实现中,都有两个不同的环境,分别是翻译环境以及执行环境。翻译环境用于将源代码转换为可执行的机器指令(编译+链接)。而执行环境指的是在执行.exe文件(二进制文件)的所处的环境。编译过程简单理解:C语言的编译过程包括四个主要环节:预处理、编译、汇编、链接。程序的预处理在C语言的预处理过程中,会对源文件进行处理,先去
对C语言中的文件操作进行讨论,包括一些相关的库函数
继续分析710的驱动代码:今天主要分析这个代码:客户端通知函数作用今天要分析的是一个客户端通知函数,该函数i40e_notify_client_of_vf_enable的作用是:在 PF 上启用或禁用 VF 后,通过客户端的回调函数通知客户端。传入参数struct i40e_pf *pf(表示 PF(Physical Function,物理功能)设备信息)u32 num_vfs(当前启用的 VF
前言在710的这个专栏里,我上篇文章中主要分析了驱动代码中的注册函数以及注册所需的结构体,其中有很多内容,今天我们围绕i40e_probe这个探测函数进行分析,由于研究原因以及时间原因,对这个驱动代码的分析,还是紧紧围绕虚拟化这个部分来分析,也就是VF。代码在github上有共享链接在这:i40e 大家如有需要可自行下载。i40e_probe该函数位于:i40e_main.c函数下,共计700多行
对之前写的通讯录改进一下,改成动态内存版本
从驱动的入口开始分析,一点一点深入了解710网卡驱动
大多数人对C语言中的柔性数组知之甚少,这篇文章我们就来讨论一下
动态内存管理第一部分解释了什么是动态内存管理,有什么用,以及一些函数,第二部分主要讨论了动态内存在使用的时候会出现一些经典的错误,需要注意。那么这个第三部分主要讨论一些有关动态内存管理有关的比较经典的笔试题。题目1请问运行Test函数会有什么样的结果?void GetMemory(char *p){ p=(char*) malloc(100); } void Test(void){
第二部分主要是常见的动态内存错误动态内存错误1.对NULL指针的解引用操作对NULL指针的解引用操作,什么意思呢?有些同学写代码的时候比较冲动,如下:int main(){ int *p= (int *)malloc(40); for (int i = 0; i < 10; ++i) { *(p+1)=i; } free(p); p=
C语言动态内存管理第一部分
对C语言的学习研究也有一段时间了,今天做一个小项目“通讯录”,来回顾之前所学。文件结构通讯录这个项目需要三个文件:1.test.c 用于测试2.contact.c 用于实现3.contact.h 声明函数需求描述1.该通讯录要能存放1000个好友的信息2.信息要包含:姓名、电话、性别、住址、年龄3.增加好友信息4.删除指定名字的好友信息5.修改好友信息6.打印好友信息7.排序。。。实现实现菜单界面
枚举枚举顾名思义就是一一列举。把可能的取值一一列举。比如我们现实生活中:一周的周一到周日是有限的7天 ,可以一一列举。在实际驱动开发中,枚举类型常用于状态吗以及错误码等类型的列举例如/* Error Codes */ enum i40e_status_code { I40E_SUCCESS = 0, I40E_ERR_NVM = -1, I40E_ERR_NVM_CHECKSUM
位断什么是位段位段的声明和结构体是类似的,有两个不同:1.位段的成员必须是int、unsigned int 或 signed int (也有一些有char)2.位段的成员后面有一个冒号和一个数字。例如:struct A{ int _a:2; int _b:5; int _c:10; int _d:30; };其中A就是一个简单的位段。我们还是先算一下这个位
在讨论自定义数据类型之前,我们不妨先回忆一下C语言的内置类型。例如字符型的char,整型中的int short long 以及浮点型的 float double,这些都会C语言本身提供的数据类型,但仅仅有这些,是不足以满足我们的开发的。那么也就意味着需要一些复杂类型来帮助我们实现对复杂对象的操作,例如结构体,枚举,联合体等。结构体本章主要讨论结构体。将由以下几个部分组成结构体类型的声明结构的基础结
引言C语言中对字符和字符串的处理是很频繁的,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串中,或者字符数组中。字符串常量适用于对其不做修改的字符串函数。计算字符串长度strlensize_t strlen ( const char * str );求出字符串str的长度以空字符‘\0’为结束标志(不包括空字符)从起始位置开始计算直到遇到‘\0’就结束。简单的用法:int main(){
一维数组int main(){ char arr[]="abcdef"; // arr[]存放的是abcdef\0 7个字符 每个字符为1 printf("%d\n",sizeof (arr)); //7 计算数组的大小7 printf("%d\n",sizeof (arr+ 0)); // 8 计算地址大小 4或8 跟具体是64位机器还是32
本篇文章主要对指针进行进一步的分析,通过对字符指针,数组指针,函数指针,指针传参等内容以及回调参数的分析,还有一些例子的解析。来分析指针进阶的内容。
主要讨论各种整型以及浮点型在内存中到底如何存储 存储方式是否相同? 如果不同,那有哪些不同呢?
学习结构体的一个记录。
内核许多子系统之间需要相互通知,Linux使用通知链(notification chain)实现这种交互需求。
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号