temp

传值,传址和传引用

眉间皱痕 提交于 2020-03-11 14:57:49
传值 传值方式:将实参的值拷贝给函数或方法,在函数内对形参进行操作,操作的对象是实参的拷贝,对实参本身没有影响,在函数结束返回后,形参被丢弃释放,实参的内容不会被改变。 c++一条基本原则:在默认情况下,参数只能以值传递的方式给函数,被传递到函数的只是变量的值,永远不会是变量本身。 void exchange(int x,int y) { int temp; temp=x; x=y; y=temp;} exchange(a,b);在调用过程中,函数隐含的把实参ab的值分别传给了形参xy, 函数中的操作只是对形参的操作,没有对实参进行任何操作,因此,实参ab的值是不变的。 传址 传址方式:将实参的地址传递给函数,在函数内对形参进行操作等同于对实参进行相同的操作,在函数调用结束返回后,形参被释放,实参的内容是对形参进行操作后的结果。 绕开值传递问题的第一种方法指针传递,是向函数传递变量的地址取代它的值。 void exchange(int *px,int *py) { int temp=*px; *px=*py; py=temp; } int a=4,b=5; exchange(&a,&b); 将ab的地址传递给函数,对 px,*py的操作即是对a,b变量本身的操作。可以实现a,b的值交换。 交换 void swap(int *x, int *y) { int temp; temp =

爬取网站页面所有a标签下的href属性

守給你的承諾、 提交于 2020-03-11 01:51:07
在写爬取页面a标签下href属性的时候,有这样一个问题,如果a标签下没有href这个属性则会报错,如下: 百度了有师傅用正则匹配的,方法感觉都不怎么好,查了BeautifulSoup的官方文档,发现一个不错的方法,如下图: 官方文档链接:https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/ has_attr() 这个方法可以判断某标签是否存在某属性,如果存在则返回 True 解决办法: 为美观使用了匿名函数 soup_a = soup.find_all(lambda tag:tag.has_attr('href')) 最终代码: 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Riy 4 5 import time 6 import requests 7 import sys 8 import logging 9 from bs4 import BeautifulSoup 10 from requests.exceptions import RequestException 11 from multiprocessing import Process, Pool 12 13 14 logging.basicConfig( 15 level=logging

2020.3.10初学python第二天

心已入冬 提交于 2020-03-10 23:44:21
元组tuple: 元组和列表有许多相似之处,但元组是用括号括起来的如: temp = (‘小甲鱼’,‘迷途’,‘直返’,‘哈喽哦’) 元组中的逗号必不可少,若想在元组中增加元素可用 temp = temp[ :2] + (‘讴群’,)+temp[2:] 元组相关的操作符:比较操作符、逻辑操作符、连接操作符+、重复操作符*、成员关系操作符in, not in 字符串的方法及注释https://fishc.com.cn/forum.php?mod=viewthread&tid=38992&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403 列表、元组和字符串的共同点:都可以通过索引得到每一个元素,默认索引值总是从0开始,可以通过分片的方法得到一个范围内的元素的集合,有很多共同的操作符(重复操作符、拼接操作符、成员关系操作符) 列表、元组和字符串统称为序列,其中有些内置函数: lish() 可以将元组、字符串等转化为序列 tuple() 可以将列表、字符串等转化为元组 str() 转化为字符串 len(sub) 返回参数的长度 max() 返回序列或者参数集合中的最大值 min() 返回序列或者参数集合中的最小值 sum( iterable [, start = 0 ] ) 有两个参数,第二个为可选项

287. 寻找重复数

*爱你&永不变心* 提交于 2020-03-10 10:25:24
class Solution : def findDuplicate ( self , nums : List [ int ] ) - > int : # method 1 # flags = [True]*(len(nums)) # for val in nums: # if flags[val-1]: # flags[val-1] = False # else: # return val # method 2 # temp = sorted(nums) # for i in range(1, len(temp)): # if temp[i] == temp[i-1]: # return temp[i] # method 3 # counts = [0]*len(nums) # for val in nums: # counts[val-1] += 1 # if counts[val-1]>1: # return val # # method 4 # def count_le(left, mid): # res = 0 # for val in nums: # if left<= val <= mid: # res += 1 # return res # left, right = 1, len(nums) # while left < right: # mid = left+

lua语言---浮点数转16进制

元气小坏坏 提交于 2020-03-10 09:37:06
--这个版本,经过验证 ,可把16进制,转浮点数,验证时间 2018-5-28 23:02 --[[ 0.0001 38D1B717 -0.0001 B8D1B717 178.125 43322000 20.59375 41A4C000 -1.275 BFA33332 0.125 3E000000 -0.65 BF266666 0.75 3F400000 0.5 3F000000 0.6 3F199999 0.7 3F333333 0.8 3F4CCCCC 0.9 3F666666 --]] --鍔熻兘锛氭妸4涓瓧鑺傜殑16杩涘埗锛岃浆鎹㈡垚锛屾诞鐐规暟锛屽苟鎵撳嵃鍑烘潵 function DatToFloat1(x) local temp local aa = 8388608 s = (x&0x80000000)>>31 e = (x&0x7F800000)>>23 temp = (x&0X7FFFFF)/aa --print(s, e, temp) local res = (1<<(e-127)) (1+temp) --local res = (1<<math.abs(e-127)) (1+temp) if s==1 then res = 0-res end return res end --璁$畻2 鐨?-n 娆℃柟 function pow(n) local temp

U9BE 给子表赋值

泄露秘密 提交于 2020-03-09 12:20:13
如果在调试中是可以,最后提交的时候没同步上去,则可以尝试在XML文档中将 Updating事件更改为AfterDefaultValue 采购单创建采购行子行 UFIDA.U9.PM.PO.POMemo temp = UFIDA.U9.PM.PO.POMemo.Create(line); temp.Description = " \n 测试"; line.POMemoes.Add(temp); 来源: https://www.cnblogs.com/Alex-Mercer/p/12447400.html

链表

元气小坏坏 提交于 2020-03-08 21:38:39
一.常见的缓存淘汰策略: 1.先进先出策略FIFO 2.最少使用策略LFU 3.最近最少使用策略LRU 二.链表 (一)链表的定义:链表是物理存储单元上 非连续 的、 非顺序 的存储结构,它由一个个结点,通过指针联系起来的,每个结点包括数据和指针。 (二)链表结构: 1.单链表 通过“指针”将一组零散的内存块串联起来使用。内存块称为结点;记录下个结点地址的指针称为后继指针next;第一个结点为头结点,用来记录链表的基地址;最后一个结点为尾结点,指针指向NULL。 链表的插入、删除操作,只需考虑相邻结点的指针变化,不需要数据搬移,时间复杂度为 O(1) 。 随机访问的时间复杂度为O(n) 。 2.循环链表 是一种特殊的单链表。尾结点的指针指向链表的头结点。 从链尾到链头比较方便。当要处理的数据具有环形结构特点时,适合采用循环链表。例如约瑟夫问题。 3.双向链表 每个结点有两个指针,分别为后继指针next和前驱指针prev。找到前驱结点的时间复杂度为O(1)。 4.双向循环链表 三. 1.删除操作 (1)删除结点中“值等于某个给定值”的结点 从头结点开始一个一个遍历,直到找到值等于给定值的结点,再删除。删除操作时间复杂度为O(1),查找操作时间复杂度为O(n);总时间复杂度为O(n)。 (2)删除给定指针指向的结点 对于单链表来说,要从头结点开始遍历找到给定结点的前驱结点,再删除

设计模式笔记-装饰器模式

让人想犯罪 __ 提交于 2020-03-08 21:12:14
设计模式 装饰器模式 文章目录 设计模式 装饰器模式 定义 假定场景 运行时修改对象的行为 饮料相关代码 行话 注意 java io的装饰器模式 自定义一个装饰器类 一个比继承更具有可扩展性的设计模式。这种设计模式带来的直接好处是 对扩展开发,对修改关闭 ,这是一个重要的设计原则。当然,它也带来了一些问题,比如:类数量较多,客户端程序员难以理解。但是,只要理解了这种设计模式的结构就可以轻松地使用这种设计模式相关的api,比如java io相关的api。本文会在末尾基于 装饰器模式 对java io做一个总结。 定义 动态地赋予对象新的责任。 所谓 动态 的意思是 在运行时而非编译时 。而 继承 是在编译时就决定了的,所以 继承 必须在 编译时 完成对类的扩展。 继承 导致的问题就是 死板 ,即代码灵活性较低,因为我们总要先在某个子类中定义好需要扩展的行为,再去另外一个子类中定义需要扩展的行为…直到所有子类。当子类个数较多时就会非常复杂。 所谓 责任 是指 行为/功能 。特别需要说明的是,我们 绝对不改变 现有类 的行为,我们只改变 当前类 该行为的结果 ,这两个类具有相同的接口(注意,所谓接口是指可以接收相同的消息,所以我使用 具有 而非 实现 二字)。 上述解释通过阅读下述假定场景可知。 假定场景 请先看下面的 饮料相关代码 。 假定要卖咖啡,所以要计算所有种类咖啡的价格

子函数中实现主函数中两整形变量值的交换

删除回忆录丶 提交于 2020-03-08 20:22:37
指针做子函数参数 # include <stdio.h> void swap1 ( short m , short n ) { short temp = 0 ; temp = m ; m = n ; n = temp ; } void swap2 ( short * pm , short * pn ) { short * temp = NULL ; temp = pm ; pm = pn ; pn = temp ; } void swap3 ( short * pm , short * pn ) { short temp = 0 ; temp = * pm ; * pm = * pn ; * pn = temp ; } main ( ) { short x , y = 0 ; x = 0x1234 ; y = 0x5678 ; printf ( "before swap1() exchange:x=%x,y=%x\n" , x , y ) ; swap1 ( x , y ) ; //形参互换,未影响实参。 printf ( "after swap1() exchange:x=%x,y=%x\n" , x , y ) ; printf ( "before swap2() exchange:x=%x,y=%x\n" , x , y ) ; swap2 ( & x , & y ) ; /

函数形参可以连续传递吗?

落爺英雄遲暮 提交于 2020-03-07 17:22:40
void AT24C04_Write(uchar adress ,uchar tdata ) { bit temp; AT24C04_Start(); AT24C04_Write_Byte(0xa0); temp = AT24C04_Ack(); if(temp == 0) AT24C04_Stop(); else { AT24C04_Write_Byte( adress) ; AT24C04_Write_Byte( tdata ); //可以直接传递tdata2020.3.7 temp = AT24C04_Ack(); if(temp == 1) AT24C04_Stop(); } 来源: CSDN 作者: qq_25814297 链接: https://blog.csdn.net/qq_25814297/article/details/104716510