首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++基础-类和对象

当把鸟、鱼、老虎等称作“动物”时,也是在使用抽象。 基类是一种抽象,可以让用户关注派生类共同特性忽略各派生类细节。类也是一种抽象,用户可以关注类接口本身忽视类内部工作方式。...构造函数名字类名相同 构造函数无返回值 构造函数可以重载,一个类可有多个构造函数 构造函数不能被声明为 const,因为一个 const 对象也是通过构造函数完成初始化,构造函数完成初始化之后,const...原因就是每当对象被复制时,编译器都将调用复制构造函数,如果参数不是引用,实参不断复制给,将生成不断复制不断调用复制构造函数。...声明构造函数时务必考虑使用关键字 explicit,以避免隐式转换。 务必将类成员声明为 std::string 和智能指针类(不是原始指针),因为它们实现了复制构造函数,可减少您工作量。...调用静态方法时,不会隐式地传递 this 指针,因为静态函数不与类实例相关联,而由所有实例共享。要在静态函数使用实例变量,应显式地声明一个,并将实参设置为 this 指针。

97320

【C语言基础】:函数详解

和实参 在函数使用过程中,把函数参数分为和实参。 指的是函数定义参数,它们位于函数名后括号内。函数定义时用来接收调用该函数时传递值或引用变量。...和实参对应关系是通过函数调用时顺序和类型来建立,因此在使用函数时需要确保实参类型和数量函数定义匹配。...二维数组行可以省略,但列不能省略:当函数形式参数是二维数组时,可以省略数组行大小,但不能省略列大小。这是因为在二维数组中,每一行大小必须是相同大小可以不同。...数组传不会创建新数组:当将数组作为参数传递给函数时,函数内部使用是原始数组地址,不是创建一个数组。这意味着对参数组修改会直接影响原始数组。...修饰局部变量 当static用于修饰局部变量时,它表示该变量在程序执行期间一直存在,不是像普通局部变量那样函数执行时存在。

12410
您找到你想要的搜索结果了吗?
是的
没有找到

C语言详解(二) - 函数

函数定义声明 3.1 定义函数返回值类型、函数名、具有的参数、实现功能进行定义定义之后,便具有了一个可以实现一定功能函数。...4.2 形式参数() 函数名后括号内定义各种变量函数声明时函数返回类型、函数名、函数数据类型是必需变量名是可有可无。...也就是说函数声明关心函数返回类型、函数名、函数数据类型,不关心变量名是什么,可以省略,但一般函数头保持一致。...4.3 实参与区别 在函数被调用、实参把值传递给时,才在内存中被创建,才开始有效。在被调函数执行完返回时,包括在内、在被调函数内有效所有变量均被销毁,释放被占用内存空间。...相同问题,递归实现往往比循环实现会占用更多时间和更多内存,如求一个正整数阶乘,斐波那契数列。 相同问题,递归实现一般比循环代码简洁。 一些问题只能用递归实现,比如汉诺塔问题。

85110

C语言基础知识总结

x:y; } 1.函数参数 1)和实参 :在定义函数时候,函数名后面小括号中参数 , 格式: 数据类型 变量 如:int x; 作用域:只能在本函数使用 实参:调用函数时候传递参数...2)参数传递过程 实参值拷贝一份放到函数中 3)函数有三种传方式:传值、传址、传引用 1°按值传递 (1)和实参各占一个独立存储空间。...(2)存储空间是函数被调用时才分配,调用开始,系统为开辟一个临时存储区,然后将各实参传递给,这是就得到了实参值。...2°地址传递 地址传递值传递不同在于,它把实参存储地址传送给,使得指针和实参指针指向同一块地址。因此,被调用函数中对指针所指向地址中内容任何改变都会影响到实参。...引用为实参别名,和实参是同一个变量,则他们值也相同,该引用改变则它实参也改变。

95220

【嵌入式开发】C语言 内存分配 地址 指针 数组 参数 实例解析

全局变量 相同点 : 全局变量是静态存储, 存储方式 和 位置基本相同; static 变量 全局变量不用点 : 全局变量作用域是 整个项目工程 横跨过个文件, 静态变量作用域是 当前文件..., 生命周期是整个程序周期; 关于函数头文件引申 :  -- 内部函数 : 单个文件中使用内部函数, 仅在那个特定文件中定义函数即可; -- 全局函数 : 如果要在整个工程中使用一个全局函数, 需要将这个函数定义一个头文件中...: static 局部变量 初始化一次, 下一次依据上一次结果; static函数普通函数区别 : static 函数在内存中保留一份, 普通函数 每调用一次, 就创建一个副本; . (6) 堆...; a = p 和 a++ 会报错; 数组参数 :  -- 指针 : 将数组传作为参数传递给函数时候, 传递是数组首地址, 传递地址, 是指针; 数组参数示例 :  -- 函数参数是数组...; -- 实参 : 指针偏移量 和 数组下标 都可以作为 数组或指针函数, 如 数组情况fun(&array[2]) 或者 指针情况fun(p + 2); -- : 函数可以声明为 fun

3.9K20

函数(function)

和实参 在定义函数时指定,在未出现函数调用时,它们并不占内存中存储单元,因此称它们是形式参数或虚拟参数,简称,表示它们并不是实际存在数据,所以,变量不能赋值。...在定义函数时,指定必须是类型加变量形式。另外,在定义函数时指定可有可无,根据函数需要来设计,如果没有形,圆括号内容为空,或写一个void关键字。...实参变量变量数据传递是“值传递”,即单向传递,由实参传给不能由传回来给实参。 在调用函数时,编译系统临时给分配存储单元。调用结束后,单元被释放。...实参单元单元是不同单元。调用结束后,单元被释放,函数调用结束返回主调函数后则不能再使用变量。实参单元仍保留并维持原值。...void max()// 最好要有void关键字 { return; // 中断函数,这个可有可无 } 3.函数声明和定义 函数声明 如果使用用户自己定义函数函数调用它函数(即主调函数

2.2K40

C语言总结_数组函数练习题

字符串标准处理函数介绍(string.h)、指针和数组当做函数,指针定义函数返回指针、void类型定义指针、类型强制转换、常量声明、extern外边引用声明关键字。 1....函数参数: 指针数组类型 函数: 指针类型数组类型 示例代码: () #include //标准输入输出 #include //字符串处理头文件...函数和返回值: 都是地址 (1)数组类型可以当做函数。void func(char buff[]){} (2)数组类型不能当做函数返回值类型。...char buff[] func(void){} 错误 函数如果要返回地址类型: 必须使用指针类型。 函数如果要传入地址类型: 可以使用指针类型或者数组类型。...*/ void func(void *p) { } //void a; //语法是错误 //int a; //定义一个int类型变量,空间是4个字节 //void *p //指针本身是存放地址

83420

【C语言】卍字通晓→函数+递归

函数概述 C语言函数好处  库函数 语法原型 自定义函数 函数参数 实际参数(实参) 形式参数()  调用函数 传值调用 传址(引用)调用  函数声明和定义  函数嵌套  函数递归 递归是什么...在函数调用中还应该注意一个问题是求值顺序问题。所谓求值顺序是指对实 表中各量是自左至右使用呢,还是自右至左使用。对此,各系统规定不一定相同。...通过引用传递方式,为指向实参地址指针,当对指向操作时,就相当于对实参本身进行操作。 传递指针可以让多个函数访问指针所引用对象,不用把对象声明为全局可访问。...递归之所以能够实现,是因为函数每个执行过程在栈中都有自己和局部变量副本,这些副本和和该函数其它执行过程是不会发生关系。...字符型指针变量str指向不就是这个字符串吗。那么这个拿到字符串一个长度是很容易,因为我们一开始str就是从第一个字符拿到不是吗?刚好可以进行判断它是不是'\0',如果不是就继续执行!

74210

c专题指针-----数组指针关联

(譬如int a, b, c, d;)和一次定义一个数组(int a[4]);这两种定义方法相同点是都定义了4个int型变量,而且这4个变量都是独立单个使用;不同点是单独定义时a、b、c、d在内存中地址不一定相连...三、指针、数组sizeof运算符 1、sizeof错误纠正: sizeof是C语言一个运算符(主要sizeof不是函数,虽然用法很像函数),sizeof作用是用来返回()里面的变量或者数据类型占用内存字节数...\n", strlen(str)); // 5 */ return 0; } 说明: (1):函数是可以用数组...(2):函数是数组时,实际传递是不是整个数组,而是数组首元素首地址。...(3):strlen一个C库函数,用来返回一个字符串长度(注意,字符串长度是不计算字符串末尾'\0')。一定要注意strlen接收参数必须是一个字符串(字符串特征是以'\0'结尾) 。

1K10

Python学习手册--第五部分(函数)

传递实参 了解了实参和概念后,我们来了解一下如何向函数传递实参。 传递实参方式很多,我们上面的例子使用是位置实参,那么什么是位置实参?位置实参要求实参顺序顺序相同。...但是,在使用关键字实参时,务必准确指定函数定义名。 默认值 编写函数时,可以给每个指定默认值,这样当你在调用函数时候,如果没有传递实参,Python将会使用默认值进行处理。...但是请注意,位置实参是严格要求实参位置,所以如果你name变量不是在第一位而是在第二位,程序就会报错,因为按照位置实参规则,你Jack是传递到第一个变量。...结合使用位置实参和任意数量实参 如果要让函数接受不同类型实参,必须在函数定义中将接纳任意数量实参放在最后。Python先匹配位置实参和关键字实参,再将余下实参都收集到最后一个中。...然而,使用并非自己编写大型模块时,最好不要采用这种导入方法:如果模块中有函数名称项目中使用名称相同,可能导致意想不到结果:Python可能遇到多个名称相同函数变量,进而覆盖函数不是分别导入所有的函数

70320

熬夜整理万字CC++总结(二),值得收藏

printf("p2 =%d\n", p2); printf("p2+1=%d\n", p2 + 1); 1.1.5 函数指针 1.1.5.1 函数参数和指针 C语言中,实参传递给,是按值传递...,也就是说,函数是实参拷贝份,和实参只是在值上面一样,不是一个内存数据对象。...,swap函数两个pa和pb可以接收两个整型变量地址,并通过间接访问方式修改了它指向变量值。...因此,如果需要在被调函数中修改主调函数变量值,就需要经过以下几个步骤: 定义函数必须为指针类型,以接收主调函数中传来变量地址; 调用函数时实参为变量地址; 在被调函数使用*间接访问指向内存空间...指针作为函数一个典型应用是当函数有多个返回值情形。比如,需要在一个函数中统计一个数组最大值、最小值和平均值。当然你可以编写三个函数分别完成统计三个值功能。

1.2K20

PHP核心编程知识点

一、PHP基本语法 PHP标记:一共有四种,推荐使用第一种 语句结束符:分号 注释:行注释(//  #)和块注释(/*   */),注释规范 二、常见输出语句 print echo var_dump...,输出变量 变量传值 值传递:传递后两个变量独占占用各自变量名空间和变量值空间,互补干扰 引用传递:传递后两个变量变量名共同引用相同变量值空间 预定义变量 $_SERVER $_GET $...3.函数调用 4.可变函数        函数名可以用一个变量来代替 5.匿名函数 6.函数参数 和实参 参数值传递和引用传递 默认值 参数数量问题 实参多于 实参少于:只有一种正确情况...,那就是有默认值时候 不定参数函数 基本思想:干脆一个都不定义 func_get_args()用来接收实参值,是一个索引数组 func_get_arg()用来获取某一个实参值,索引是从0开始...静态局部变量使用关键字static 8.函数递归调用 概念:就是函数在执行时候自己调用自己,不是一种新语法,而是一种算法描述 递归调用关键点:递归出口,递归点,写程序时候先写递归出口,然后再写递归点

3.4K51

const、sizeof内联函数相关面试题

有些集成测化测试工具可以对const常量进行调试,但是不能对宏常量进行调试。 在C++程序中使用const常量使用宏常量,即const常量完全取代宏常量。...在C++程序中,类里面的数据成员加上mutable后,修饰为const成员变量,就可以修改它了。 2.sizeofstrlen区别?...strlen结果要在运行时候才能计算出来,用来计算字符串长度,不是类型占内存大小。 sizeof后如果是类型必须加括号,如果是变量名可以不加括号。...这是因为sizeof是一个操作符,不是函数。 当使用一个结构类型或变量时,sizeof返回实际大小。当使用一静态变量空间数组时,sizeof返回全部数组尺寸。...便于一些类型补充。 由于操作数字节数在实现时可能会出现变化,建议在设计操作数字节大小时用sizeof代替常量计算。 如果操作数是函数数组函数类型,sizeof给出指针大小。

45340

读完某C++神作,我记下了100句话

case从匹配开始执行直到结束,不是执行匹配。...do{此处定义变量循环条件中不可见}while(...) throw 类型 每一个标准库异常类都有what()函数返回C风格用户输入字符串。...指向函数指针:函数类型由返回值和决定,函数名无关。函数名本身就是指针。...对于list对象应该优先使用list容器特有的成员版本【能添加删除元素】,不是泛型算法。 简单说,类就是定义一个类型和一个作用域。成员访问级别默认私有。...static成员函数没有this,可直接访问类static成员,不能使用非static成员。 静态数据成员属于一个类,不属于类各个对象。静态成员函数在所有对象建立之前或删除之后仍然使用

1.4K20

C++面试知识总结

结构类型操作数sizeof是这种类型对象总字节数。 如果操作数是函数数组函数类型,sizeof给出其指针大小。...2.21 sizeofstrlen区别 sizeof是运算符,计算数据所占内存空间;strlen()是一个函数,计算字符数组字符数。...覆盖和隐藏区别: 派生类函数基类函数同名,但是参数不同。此时,不论有无virtual关键字,基类函数将被隐藏。 派生类函数基类函数同名,参数也相同。...3.11 引用多态关系 引用就是对象别名。 引用主要用作函数。 引用必须用该引用同类型对象初始化: 引用是除指针外另一个可以产生多态效果手段。...static成员函数在类外部定义。 Static成员函数没有this。 可以直接访问所属类static成员,不能直接使用非static成员。

1.7K41

程序员C语言快速上手——基础篇(五)

在国内大量C语言图书及高校垃圾教材中,大量例程永远使用一个main函数,虽然这些教材也讲函数,但明显是为了讲讲,形而上学讲,完全缺乏实用性。...不错,具有int类型返回值函数定义又比较简单,编译器确实能帮你成功隐式声明,但这种小聪明是绝不推荐。 那GCC为什么警告不报错呢?...这意味着C中相同作用域内函数绝不能同名,哪怕返回值和都不同。C语言还没有命名空间概念,这两者综合一起就是C语言最大缺陷之一。 C语言函数声明定义是分离,但是在任何时候都应当先声明再实现。...意即,当自定义函数定义在main函数之前时,它同时包含了声明定义。 关于形式参数实际参数概念理解 就相当于是商店橱窗里塑胶模特,而你带着女朋友进去试衣服,你女朋友就成了实参。...C语言实参与之间是值传递,简单说就是值拷贝。在调用函数时,实际参数值被复制了一份,拷贝给。因此参与实参本质上就是两个变量,不可等同,它们仅是值相同

91120

C++数组名作函数参数 | 求3*4矩阵中最大

C++用数组元素作函数实参  C++中实参可以是表达式,数组元素可以是表达式组成部分,因此数组元素可以作为函数实参,变量作实参一样,将数组元素值传送给变量。...C++用数组名作函数参数有三点需要读者注意: 如果函数实参是数组名,也应为数组名,不能声明为普 通变量。实参数组参数组类型应一致,如不一致,结果将出错。...数组名代表数组首元素地址,并不代表数组中全部元素,因此用数组名作函数实参时,不是把实参数组值传递给只是将实参数组首元素地址传递给。...在用变量函数参数时,只能将实参变量值传给 变量,在调用函数过程中如果改变了 值,对实参没有影响,即实参值不因值改 变改变。...//函数返回值为0  }  int max_Array(int array[3][4])//自定义函数  {   int i,j,max;//定义变量    max=array[0][0];//把二维数组一个元素赋值给

1.5K2828

C语言基础知识梳理总结

(2) 实参可以是常量、变量或者表达式;有时传递时地址;   (3) 在被定义中,必须指定类型;   (4) 实参与类型应相同或赋值兼容;   (5) C语言规定,实参变量变量数据传递是...“值传递”,即单向传递,只有实参传递给不能由传递给实参。...4、如果调用函数中没有return语句,并不带回一个确定用户需要值,函数不是不带回值,只是不带回有用值,带回一个不确定值。 5、如不需要带回任何值,用void。...h文件是头文件所用后缀。   3、如果使用用户自己定义函数,而且该函数使用函数在同一个文件中,一般还应该在主调函数中对被调用函数做声明。   ...局部变量和全局变量: 1、局部变量一个函数内部定义变量是内部变量,它只是在本函数范围内有效,主函数也不能使用其它函数定义变量;不同函数中可以使用相同名字变量,他们代表不同对象

73410

最全C语言基础知识梳理总结

(2) 实参可以是常量、变量或者表达式;有时传递时地址; (3) 在被定义中,必须指定类型; (4) 实参与类型应相同或赋值兼容; (5) C语言规定,实参变量变量数据传递是“值传递...”,即单向传递,只有实参传递给不能由传递给实参。...(4)如果调用函数中没有return语句,并不带回一个确定用户需要值,函数不是不带回值,只是不带回有用值,带回一个不确定值。(5)如不需要带回任何值,用void。...h文件是头文件所用后缀。 3、如果使用用户自己定义函数,而且该函数使用函数在同一个文件中,一般还应该在主调函数中对被调用函数做声明。...局部变量和全局变量: (一)局部变量一个函数内部定义变量是内部变量,它只是在本函数范围内有效,主函数也不能使用其它函数定义变量;不同函数中可以使用相同名字变量,他们代表不同对象,互不干扰

2K40

Python函数 & 变量

python 函数表示一个功能,函数定义者是提供功能的人,函数调用者是使用功能的人print(数据) 作用:将括号中内容显示在控制台中变量 = input("需要显示内容") 作用:将用户输入内容赋值给变量...1.掌握函数定义调用;2.掌握函数实参和使用方法;3.了解函数返回值;4.掌握缺省参数使用方法;1....,能够适应更多数据;1.在函数内部,把参数当做变量使用,进行需要数据处理2.函数调用时,按照函数定义参数顺序,把希望在函数内部处理数据,通过参数传递2.5、和实参:定义函数时,小括号中参数...定义函数时候,没有值,只是一个变量名 。...所以要把因为需求改变代码放到函数之外,函数之内代码函数定义完不改变●有时候,函数不是要显示什么内容,而是要把一个值返回给调用者, 比如python自带len函数就是这样函数内容通过return

19210
领券