int函数

函数参数的传值与传址

旧巷老猫 提交于 2020-03-21 19:26:40
在如下的主函数里面调用swap函数,问哪一个才能正确交换a,b两变量的值? int main() { int a=3,b=5; int *pointer_1 = &a; int *pointer_2 = &b; swap(pointer_1,pointer_2); printf("%d %d",*pointer_1,*pointer_2); return 0; } /** swap1是正确的,通过地址传递参数,令pointer_1和pointer_2两个指针变量所指向的变量的值发生了改变。 */ swap1(int *p1,int *p2) { int temp; temp = *p1; *p1 = *p2; *p2 = temp; } /** swap2运行时,系统容易出问题。其实它在原理上是正确的,和swap1一样,但是*temp是指针变量temp所指向的变量(该变量应该是系统中 已经存在的了),但temp中并没有确定的地址值,它的值是不可预见的,故*temp所指向的单元也是不可预见的。因此,对*temp赋值可能会破 坏系统的正常工作状况。所以还是要像swap1一样,重新定义一个临时变量temp。 */ swap2(int *p1,int *p2) { int *temp; *temp = *p1; *p1 = *p2; *p2 = *temp; } /**

函数与数组

∥☆過路亽.° 提交于 2020-03-21 05:49:59
一:函数 1.什么是函数呢 ? 就是在不断进行加法运算时,为了提高代码的复用性,就把该功能封装为一段独立的小程序,当下次需要执行加法运算的时候,就可以直接调用这段小程序,那么这种封装形式的具体表现则称之为函数 例如 public class dame{     public static void main(String[] args){     int a = 4+5;        System.out.println("a="+a);       int b = 3+9;        System.out.println("b="+b);       add(4,5);      }     public static int add(int a, int b){        return a+b;     } } 2.函数的格式 修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2 , ......){ 执行语句; return 返回值; } 参数类型: 运行这段程序得出的一个运算结果,结果类型,如果函数没有返回值则用 void 来表示该函数没有返回值 函数名:仅仅是一个标识符,可以随意起名字 。 形式参数: 是一个变量,用于存储函数传递进来的实际参数 实际测试:传递给形式参数的具体数值 返回值:返回给调用者的 a:定义函数 1.是否有未知内容参与运算

STL优先队列详解

…衆ロ難τιáo~ 提交于 2020-03-21 02:49:18
优先队列 优先队列是一种抽象数据类型(Abstract Date Type,ADT),行为和队列类似,但是先出队的元素不是先进队列的元素,而是队列中优先级最高的元素。 STL的优先队列定义在头文件<queue>和 (队列一样),用"priority_queue<int>pq"来声明; 最基本的用法 定义 : priority_queue<int>pq ; 操作: pq.empty() 如果队列为空返回真 pq.pop() 删除对顶元素 pq.push() 加入一个元素 pq.size() 返回优先队列中拥有的元素个数 pq.top() 返回优先队列对顶元素 下面我们介绍几种优先队列的定义方式: priority_queue<int>pq 默认的是整数越大,优先级越高,如果想让他 整数越小 优先级越高怎么办? STL中也有模板 “priority_queue<int,vector<int>,greater<int > >pq” 上面的尖括号内第一个 参数 为入队元素类型(int),第二个为容器类型(vector<int>),第三个为比较函数(greater<int>) 因此我们也能自定义 priority_queue<int,vector<int>,cmp1 >pq; 最小值优先 priority_queue<int,vector<int>,cmp2 >pq2; 最大值优先

STL之优先队列

大兔子大兔子 提交于 2020-03-21 02:48:50
STL 中优先队列的使用方法(priority_queu) 基本操作: empty() 如果队列为空返回真 pop() 删除对顶元素 push() 加入一个元素 size() 返回优先队列中拥有的元素个数 top() 返回优先队列对顶元素 在默认的优先队列中,优先级高的先出队。在默认的int型中先出队的为较大的数。 使用方法: 头文件: #include <queue> 声明方式: 1、普通方法: priority_queue < int > q; // 通过操作,按照元素从大到小的顺序出队 2、自定义优先级: struct cmp { operator bool ()( int x, int y) { return  x > y; // x小的优先级高 // 也可以写成其他方式,如: return p[x] > p[y];表示p[i]小的优先级高 } }; priority_queue < int , vector < int > , cmp > q; // 定义方法 // 其中,第二个参数为容器类型。第三个参数为比较函数。 3、结构体声明方式: struct node { int x, y; friend bool operator < (node a, node b) { return a.x > b.x; // 结构体中,x小的优先级高 } }; priority

golang动画等待计算菲波那契结果

倾然丶 夕夏残阳落幕 提交于 2020-03-20 12:31:03
一个小玩意,main goroutine将计算菲波那契数列的第45个元素值。由于计算函数使用低效的递归,所以会运行相当长时间,在此期间我们想让用户看到一个可见的标识来表明程序依然在正常运行,所以来做一个动画的小图标: package main import ( "fmt" "time" ) func main() { go spinner(100 * time.Millisecond) const n = 45 fibN := fib(n) // slow fmt.Printf("\rFibonacci(%d) = %d\n", n, fibN) } func spinner(delay time.Duration) { for { for _, r := range `-\|/` { fmt.Printf("\r%c Caculating...", r) time.Sleep(delay) } } } func fib(x int) int { if x < 2 { return x } return fib(x-1) + fib(x-2) } 来源: https://www.cnblogs.com/janeysj/p/12530702.html

dup与dup2函数

試著忘記壹切 提交于 2020-03-20 12:30:09
依赖的头文件 #include <unistd.h> 函数定义 int dup(int oldfd); int dup2(int oldfd, int newfd); 函数作用 dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。 如果两个文件描述符指向同一个file结构体,File Status Flag和读写位置只保存一份在file结构体中,并且file结构体的引用计数是2。 如果两次open同一文件得到两个文件描述符,则每个描述符对应一个不同的file结构体,可以有不同的File Status Flag和读写位置。 实战 需求:在代码中执行2次printf("hello Linux\n"),前一次输入到world文件中,后一次输入到屏幕上 #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> void file_Redirect() { //先备份现场 int outfd = dup(1); //先做重定向 int fd = open("world", O_WRONLY|O_CREAT,0666); //标准输出到重定向fd到对应的文件 dup2(fd, 1); printf(

LC410. Split Array Largest Sum

社会主义新天地 提交于 2020-03-20 11:01:28
把一个数组分成m个连续子数组(不能有空数组),求所有分法中,子数组sum的最大值的最小值。 方法1:容易想到的是动态规划 dp[i][j] = min(max(dp[k-1][j-1], sum[k][i]) 1 <= k <= i, dp[i][j]表示用前i个数字,分成j组,最大和的最小值 time:$O(nnm)$ space:$O(nm)$ class Solution { public: typedef long long ll; ll INF = 1e15; int splitArray(vector<int>& nums, int m) { int n = nums.size(); vector<vector<ll>> dp(n + 1, vector<ll>(m + 1, INF)); dp[0][0] = 0; vector<ll> sums(n + 1, 0); for (int i = 0; i < n; ++i) sums[i + 1] = sums[i] + nums[i]; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { for (int k = 1; k <= i; ++k) { dp[i][j] = min(dp[i][j], max(dp[k - 1][j - 1],

《C++ Primer》笔记-引用

半世苍凉 提交于 2020-03-20 09:03:17
引用就是给变量起别名,然后别名和原变量就完全是一回事了,在C++中常用作函数形参,以返回多个值: 如:BOOL initLinkList(&L) 1.不能定义引用类型的引用,但可以定义任何其他类型的引用。 2.引用必须用与该引用同类型的对象初始化: int ival = 1024; int &refVal = ival; // ok: refVal refers to ival int &refVal2; // error: a reference must be initialized int &refVal3 = 10; // error: initializer must be an object 定义多个引用 可以在一个类型定义行中定义多个引用。必须在每个引用标识符前添加 “&”符号: int i = 1024, i2 = 2048; int &r = i, r2 = i2; // r is a reference, r2 is an int inti3=1024,&ri=i3; //definesoneobject,andonereference int &r3 = i3, &r4 = i2; // defines two references const 引用 const 引用是指向 const 对象的引用: const int ival = 1024; const

实验6:Problem F: 时间和日期类(IV)

≯℡__Kan透↙ 提交于 2020-03-19 13:59:05
Description 设计一个日期时间类,用于读取输入的数据,按格式输出日期和时间。 设计日期时间类DateTime由2个成员组成,分别是一个Date类对象和一个Time类对象; 设计DateTime类需支持以下操作: DateTime::DateTime()无参构造方法:初始化为1年1月1日、0时0分0秒; DateTime::DateTime(int,int,int,int,int,int)构造方法:依照参数(顺序为年月日、时分秒)初始化对象; 在上述两个DateTime类的构造函数中输出:“CREATE DateTime : (y, m, d, hh, mm, ss)”,其中y、m、d为初始化对象时的年月日值,h、m、s为初始化对象时的时分秒值。参见输出。 DateTime::DateTime(const Date&,const Time&)构造方法:依照参数传入的日期和时间初始化对象; 在这个DateTime类的构造函数中输出:“CREATE DateTime : (y, m, d) (hh, mm, ss)”,其中y、m、d为初始化对象时的年月日值,h、m、s为初始化对象时的时分秒值。参见输出。 DateTime:DateTime(const DateTime&)构造方法:拷贝构造函数,初始化对象。 在拷贝构造函数中输出:“COPY DateTime : (y, m,

指针系统学习2

故事扮演 提交于 2020-03-19 08:42:14
1.数组与指针   一个变量有地址,一个数组包含若干元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址。   指针变量既然可以指向变量,当然也可以指向数组元素(把某一元素的地址放到一个指针变量中)。   所谓数组元素的指针就是数组元素的地址。 2.指向数组元素的指针   定义一个指向数组元素的指针变量的方法,与以前介绍的指向变量的指针变量相同。   例如:   int a[10];(定义a为包含10个整型数据的数组)   int *p; (定义p为指向整型变量的指针变量)。   应当注意,如果数组为int型,则指针变量的基类型亦应为int型。 3.下面是对该指针变量赋值:   p = &a[0];把a[0]元素的地址赋给指针变量p。 也就是使p指向a数组的第0号元素,见图 -->> 4.通过指针引用数组元素:   引用一个数组元素,可以用:   (1) 下标法,如 a[i] 形式;   (2) 指针法,如*(a+i)或*(p+i)。   其中的a是数组名,p是指向数组元素的指针变量,其初值 p=a。   注意:数组名即“翻译成数组的第一个元素的地址! 例题: 输出数组中的全部元素 假设有一个a数组,整型,有10个元素。要输出各元素的值有三种方法: (1) 下标法 #include <stdio.h> void main() { int a[10]; int i; for(