fun函数

第一章 数组与指针概念剖析

情到浓时终转凉″ 提交于 2019-12-04 07:41:25
数组与指针生来就是双胞胎,多数人就是从数组的学习开始指针的旅程的。在学习的过程中,很自然就会经常听到或见到关于数组与指针的各种各样的看法,下面我节选一些在各种论坛和文章里经常见到的文字: “一维数组是一级指针” “二维数组是二级指针” “数组名是一个常量指针” “数组名是一个指针常量” ........................ 这些文字看起来非常熟悉吧?类似的文字还有许多。不过非常遗憾,这些文字都是错误的,实际上数组名永远都不是指针!这个结论也许会让你震惊,但它的确是事实。但是,在论述这个问题之前,首先需要解决两个问题:什么是指针?什么是数组?这是本章的主要内容,数组名是否指针这个问题留在第二章进行讨论。看到这里,也许有人心里就会嘀咕了,这么简单的问题还需要说吗?int *p, a[10];不就是指针和数组吗?但是,笔者在过往的讨论过程中,还真的发现有不少人对这两个概念远非清晰,这会妨碍对后面内容的理解,所以还是有必要先讨论一下。 什么是指针?一种普遍存在的理解是,把指针变量理解成就是指针,这种理解是片面的,指针变量只是指针的其中一种形态,但指针并不仅仅只有指针变量。一个指针,包含了两方面的涵义:实体(entity)和类型。标准是这样描述指针类型的: 6.2.5 Types A pointer type may be derived from a function type

C/C++ 的编译和链接

流过昼夜 提交于 2019-12-04 06:34:30
C/C++文件 C/C++程序文件包括 .h .c .hpp .cpp,其中源文件(.c .cpp)是基本的编译单元,头文件(.h .hpp)不会被编译器编译。 C/C++项目构建(build)过程,分为以下几个步骤 预处理 → 编译 → 链接。 预编译 预编译的过程可以理解为编译器(实际上是预处理器,这里统称为编译器就可以了)在正式编译之前处理C/C++文件中的预处理命令,即#开头的代码。 常用的几个预处理命令如下: #include ...... #ifdef ...... #else......#endif #define ...... #pragma ...... 举个例子,下面是个很简单的类定义: MyClass.h #define DEFAULT_VALUE 0 class MyClass { public: void Fun(); public: int value = DEFAULT_VALUE; }; MyClass.cpp #include "MyClass.h" void MyClass::Fun() { // Do someting return; } 预编译完成后的样子: class MyClass { public: void Fun(); public: int value = 0; }; void MyClass::Fun() { // Do

批量修改datafram中某一列

风格不统一 提交于 2019-12-04 01:58:31
如要对df中列名为“values”的值做修改,大于等于50改为1,小于50改为0,可用apply函数来实现: def fun(x): if x >= 50: return 1 else: return 0 df['values'] = df['values'].apply(lambda x: fun(x))    来源: https://www.cnblogs.com/sxinfo/p/11827598.html

c++虚函数的原理及实现

梦想的初衷 提交于 2019-12-03 22:09:02
虚函数是在类中被声明为virtual的成员函数,当编译器看到通过指针或引用调用此类函数时,对其执行晚绑定,即通过指针(或引用)指向的类的类型信息来决定该函数是哪个类的。通常此类指针或引用都声明为基类的,它可以指向基类或派生类的对象。 多态指同一个方法根据其所属的不同对象可以有不同的行为(根据自己理解,不知这么说是否严谨)。 举个例子说明虚函数、多态、早绑定和晚绑定: 李氏两兄妹(哥哥和妹妹)参加姓氏运动会(不同姓氏组队参加),哥哥男子项目比赛,妹妹参加女子项目比赛,开幕式有一个参赛队伍代表发言仪式,兄妹俩都想 去露露脸,可只能一人去,最终他们决定到时抓阄决定,而组委会也不反对,它才不关心是哥哥还是妹妹来发言,只要派一个姓李的来说两句话就行。运动会如期举 行,妹妹抓阄获得代表李家发言的机会,哥哥参加了男子项目比赛,妹妹参加了女子项目比赛。比赛结果就不是我们关心的了。 现在让我们来做个类比(只讨论与运动会相关的话题): (1)类的设计: 李氏兄妹属于李氏家族,李氏是基类(这里还是抽象的纯基类),李氏又派生出两个子类(李氏男和李氏女),李氏男会所有男子项目的比赛(李氏男的成员函 数),李氏女会所有女子项目的比赛(李氏女的成员函数)。姓李的人都会发言(基类虚函数),李氏男和李氏女继承自李氏当然也会发言,只是男女说话声音不一 样,内容也会又差异,给人感觉不同

深入理解计算机系统 - 练习题 - 第三章 (练习题3.32)

有些话、适合烂在心里 提交于 2019-12-03 13:20:55
一个C函数的fun具有如下代码体 *p = d; return x - c; 执行这个函数体的IA32代码如下: 1 movsbl 12(%ebp),%edx 2 movl 16(%ebp),%eas 3 movl %edx,(%eax) 4 movswl 8(%ebp),%eax 5 movl 20(%ebp),%edx 6 subl %eax,%edx 7 movl %edx,%eax 写出函数fun的原型,给出参数p、d、x和c的类型和顺序 答案 epb是栈帧指针,参数压栈的顺序是从右到左。返回值由寄存器eax返回。 所以结合汇编代码,其解释为: 1 movsbl 12(%ebp),%edx //char d 2 movl 16(%ebp),%eax //int *p 3 movl %edx,(%eax) // *p = d 4 movswl 8(%ebp),%eax //short c 5 movl 20(%ebp),%edx //int x 6 subl %eax,%edx // x - c 7 movl %edx,%eax // int 则fun的原型为 int fun(short c, char d, int* p, int x); 来源: CSDN 作者: changhai1982 链接: https://blog.csdn.net/CHANGHAI1982

C博客作业03--函数

╄→尐↘猪︶ㄣ 提交于 2019-12-03 10:02:54
第三次C博客作业 Q0.展示PTA总分 Q1.本章学习总结 1.1 学习内容总结 函数的组成与使用 定义好了一个函数还需要函数声明才能使用它(函数定义写在主函数后面时) 下面举例的函数中,int a、int b为形参,5、3为实参,a被赋予了5的值,b被赋予了3的值 函数计算完毕后的result的值返回给了main()函数中的c 函数执行到c=fun(5,3)这一句时,会暂停main()函数,转入进行fun()函数 int fun(int a, int b); //函数声明,这里有分号 int main() { int c; c = fun(5, 3); //走到这里调用定义的fun()函数 printf("%d", c); return 0; } int fun(int a, int b) //函数首部,注意这里没有分号!需要有函数类型和函数名,并不一定需要形参 { int result = 1; //函数体 for (int i = 1; i <= b; i++) result = result * a; return result; //相当于fun(a,b)=result,在main()函数中即为c=result=fun(a,b) } 关于函数调用的注意事项 1.形参与实参一一对应, 两者数量相同 ,类型尽量保持一致,程序运行到函数调用时,实参的值会 依次传给形参 2

函数-(记录日志功能)

你说的曾经没有我的故事 提交于 2019-12-03 04:03:05
函数-(记录日志功能) #_author:xing#date:2019/11/1import timedef fun(n): time_format='%Y-%m-%d %X' current_time=time.strftime(time_format) with open('record_log','a',encoding='utf8') as f: f.write('end function %s,%s\n'%(n,current_time))def function1(n): print('starting action1') fun(n)def function2(n): print('starting action1') fun(n)def function3(n): print('starting action1') fun(n)function1(1)function2(2)function3(3)Output: starting action1 starting action1 starting action1 来源: https://www.cnblogs.com/startl/p/11776167.html

filter过滤器

匿名 (未验证) 提交于 2019-12-03 00:30:01
# filter(fun,iterable) 内置函数,不需要导入 #fun 功能函数,参数需要满足的条件 #irerable 迭代器,需要过滤的多个参数 #作用:将迭代器中的每个函数取出来,执行fun,根据该函数的返回值决定是否保留(True),不保留(False) #例子:去掉1-100之间的偶数 list1 = range(1,101) #生成1-100之间的所有整数 #定义一个函数 文章来源: filter过滤器

函数适配器

匿名 (未验证) 提交于 2019-12-03 00:26:01
1 2 标准库提供一组函数适配器,用来特殊化或者扩展一元和二元函数对象。常用适配器是: 1 binder : binder C binder bind1st bind2nd 2 (negator) : negator ngeator not1 , not2 常用函数适配器列表如下: bind1st(op, value) bind2nd(op, value) not1(op) not2(op) mem_fun_ref(op) mem_fun(op) ptr_fun(op) 3 #include"vector" #include"algorithm" #include"string" #include"functional" #include"iostream" using namespace std; class dayu { public: dayu(int i) { num = i; } bool operator()(int &n) { if (n > num) { return true; } else { return false; } } private: int num; }; int main01() { vector<int>v1(15); for (int i = 0; i < 15; i++) { v1[i] = rand() %100; } for

C++求出整型和字符型的最大值

匿名 (未验证) 提交于 2019-12-03 00:21:02
两种方法求出最大值: 1.注释的是第一种方法,首先自然是用监哨求值法,在void fun()方法里面求最大下标,然后直接打印。 2.未注释的是通过返回下标来然后直接打印,将方法放到cout<<fun(......)<<endl; #include<iostream> using namespace std; //定义函数 /* void fun(int score[30]) { int listen = 0; for(int i=0;i<5;i++){ if(score[listen]<score[i]) { listen = i; } } cout<<score[listen]<<endl; } void fun(char score[100]) { char listen = 0; for(int i=0;i<100;i++) { if(score[listen]<score[i]) { listen=i; } } cout<<score[listen]<<endl; char y=score[0]; for(int x=0;x<100;x++) { if(score[x]<score[x+1]) { y=score[x+1]; } } cout<<"打印字符数组"<<y<<endl; } */ int fun(int score[30],int ilen) { int