字符数组

字符数组,字符指针,Sizeof总结

痞子三分冷 提交于 2019-12-18 09:56:35
字符数组,字符指针,Sizeof总结 1.以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符,如在代码中写 "abc",那么编译器帮你存储的是"abc\0" 2."abc"是常量吗?答案是有时是,有时不是。 不是常量的情况:"abc"作为字符数组初始值的时候就不是,如 char str[] = "abc"; 因为定义的是一个字符数组,所以就相当于定义了一些空间来存放"abc",而又因为 字符数组就是把字符一个一个地存放的,所以编译器把这个语句解析为 char str[3] = {'a','b','c'}; 又根据上面的总结1,所以char str[] = "abc";的最终结果是 char str[4] = {'a','b','c','\0'}; 做一下扩展,如果char str[] = "abc";是在函数内部写的话,那么这里 的"abc\0"因为不是常量,所以应该被放在栈上。 是常量的情况: 把"abc"赋给一个字符指针变量时,如 char* ptr = "abc"; 因为定义的是一个普通指针,并没有定义空间来存放"abc",所以编译器得帮我们 找地方来放"abc",显然,把这里的"abc"当成常量并把它放到程序的常量区是编译器 最合适的选择。所以尽管ptr的类型不是const char*,并且ptr[0] = 'x';也能编译 通过,但是执行ptr[0] =

数据结构与算法--栈、队列(栈)

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-18 02:38:31
hello,everybody. 我们又见面了,这次我们一起来学习数据结构中,非常有意思的两种结构—Stack ,Queue. 首先来学习一下栈: 栈: 限定只在表尾进行删除插入操作的线性表。 顾名思义,栈是一种特殊的线性表。它特殊在什么地方呢?它只能在表尾进行插入或删除操作,又就意味着,它只能是先进后出。给大家举个现实中,利用栈的例子。我们都用浏览器浏览过网页,我们对浏览器的前进后退按钮一定都不陌生。当我们打开第一个网页时,有一个图片链接,于是我们又跳到了第二个网页。此时,又有一个文字链接,我们又跳到了第三个网页。此时,我点击浏览器的后退按钮,我们会回到第二个网页。再点击浏览器的后退按钮,我们又跑到了第一个网页。是不是最先打开的第一个网页,是最后一个恢复的?是不是,先进后出? 看来,我们在学习第二章线性表时,付出的心血没有白费。看看,我在学习栈与队列时,感到很轻松,因为它讲的一些概念,我都掌握了。所以,我们在学习知识时,一定要踏实,耐心。付出一定会有回报的,你用心付出,回报巨大,回报明显。你不用心付出,回报微小,回报不明显。你不付出,只是随意看看,那么当别人说起这些知识时,你也可以装下B。所以,付出是有回报的。只是为了,回报巨大,回报明显,我们需要用心,态度要端正。 我们把允许删除的一端称为栈顶(Top),另一端称为栈底(Bottom). 不含任何数据元素的栈称为空栈

深入Spring IOC源码之ResourceLoader

别等时光非礼了梦想. 提交于 2019-12-17 17:55:17
在《深入Spring IOC 源码之Resource 》中已经详细介绍了Spring 中Resource 的抽象,Resource 接口有很多实现类,我们当然可以使用各自的构造函数创建符合需求的Resource 实例,然而Spring 提供了ResourceLoader 接口用于实现不同的Resource 加载策略,即将不同Resource 实例的创建交给ResourceLoader 来计算。 public interface ResourceLoader { //classpath String CLASSPATH_URL_PREFIX = ResourceUtils. CLASSPATH_URL_PREFIX ; Resource getResource(String location); ClassLoader getClassLoader(); } 在ResourceLoader 接口中,主要定义了一个方法:getResource() ,它通过提供的资源location 参数获取Resource 实例,该实例可以是ClasPathResource 、FileSystemResource 、UrlResource 等,但是该方法返回的Resource 实例并不保证该Resource 一定是存在的,需要调用exists 方法判断。该方法需要支持一下模式的资源加载: 1. URL

JS学习笔记01-对象类型

泪湿孤枕 提交于 2019-12-17 05:47:29
JavaScript是一种"动态类型"语言,变量没有类型限制,可以随时更改类型,可以随时赋予任意值。 本文主要记录两大类常见类型: 原始类型:boolean、number、string 合成类型:Object、Function、Array 一、原始类型 1.1、boolean 1.1.1 相关方法 none 1.1.2 重点难点 none 1.1.3 类型转换 Boolean()函数可以将任意类型的值转为布尔 它的转换规则相对简单:除了五个值( null 、 undefined 、 0 、 NaN 、 空字符串 )的转换结果为false,其他的值全部为true。注意所有对象(包括空对象)的转换结果都是true,连 false 对应的对象 new Boolean(false) 也是true。 1.2、number 1.2.1 相关方法 parseInt:用于将字符串转为整数 parseFloat:用于将一个字符串转为浮点数 1.2.2 重点难点 JS内部所有数字都是以64位浮点数形式储存,即使整数也是如此 : 第1位:符号位, 0 表示正数, 1 表示负数 第2位到第12位(共11位):指数部分 第13位到第64位(共52位):小数部分(即有效数字) 所以 1 与 1.0 是严格相同的。又因浮点数不是精确的值,所以涉及小数比较和运算要小心。如 (0.3-0.2)===(0.2-0.1

Python 常用模块介绍

自古美人都是妖i 提交于 2019-12-16 17:57:29
time模块 time模块 import time time模块的常用方法: 时间戳 从1970年1月1日0:00:00开始按秒计算 time.time() 格式化时间(显示当前时间) time.strftime(%Y-%m-%d %X) %Y 年 -%m月- %d日 %X秒 datetime模块 datetime模块 import datetime 返回当前时间 print(datetime.datetime.now()) 2019-8-19 15:05:30.000000 #当前时间 print(datetime.datetime.now()) #当前时间的加减 print(print(datetime.datetime.now() + datetime.timedelta(3))) 2019-8-19 15:05:30.000000 2019-8-22 15:05:30.000000 通过datetime.timedelta添加来达到当前日期的加减模式: 默认加减天数,hours加减小时,minutes加减分钟 random模块 random模块 import random random模块方法 random方法: #大于0且小于1的小数 print(random.random()) #想生成0且小于多少的小数只要在后面乘多少就好啦 print(random.random()

c语言字符串处理笔记【自用·长期更新】

萝らか妹 提交于 2019-12-15 03:20:32
字符数组和字符串的定义和使用 一维char数组 char str1 [ ] = "This is a string" ; char str2 [ ] = { 'a' , 'b' , 'c' , '\0' } ; char str3 [ 50 ] = "This is a string" ; char * str4 = "This is a string" ; char str5 [ ] [ ] 在C语言中,字符串总是以’\0’作为串的结束符。字符串会在末尾自动添加,而如果使用第二种初始化方式则需要在末尾添加’\0’。 str4是一个char型指针,指向字符串所占用内存区域的首位,这里指向字符’T’,由于它是一个指针类型所以可以改变其指向的位置。 ‘\0’:是ASCII码表中的第0个字符,用NUL表示,称为空字符。该字符既不能显示,也不是控制字符,输出该字符不会有任何效果,它在C语言中仅作为字符串的结束标志。 二维char数组 char str1 [ 2 ] [ 10 ] = { "hello" , "world" } ; char str2 [ ] [ 10 ] = { "hello" , "world" } ; char * str3 [ 10 ] { "hello" , "world" } ; char * s [ 10 ] = { str1 [ 0 ] } ; char (

ES6上

纵然是瞬间 提交于 2019-12-09 16:35:32
1.let和const命令 1.1let命令 类似于var,let声明的变量只在let命令所在的代码块有效 1.不存在变量提升 2.暂时性死区 使用let声明之前,该变量都是不可用的 3.不允许重复声明 在相同作用域不能重复声明同一个变量,不能在函数内部重新声明变量 1.2块级作用域 1.let实际为JS新增了块级作用域 外层代码块不受内层代码块的影响 ES6规定在块级作用域之中,函数声明类似于let,在块级作用域之外不可引用 2.do表达式 在块级作用域之外没办法得到内层的值,加上do,成为do表达式,可以得到整个块级作用域的返回值 1.3const命令 1.声明一个只读的常量,一旦声明,不能改变,同样也不能只声明而不赋值 作用域和let一样,只在声明的块级作用域有效 2.实际上不是值不能改变,而是变量指向的那个地址不得改动 1.4声明变量的方法:let var const import class function 1.顶层对象的属性 ES6规定var和function声明的全局变量依旧是顶层对象的属性 let/const/class声明的全局变量不属于顶层对象的属性 2.global对象 引入global作为顶层对象,在所有环境下,global都是存在的,都可以拿到顶层对象 2.变量的解构赋值 2.1数组 1.按照一定模式从数组和对象中提取值,然后对变量进行赋值

数组中截取特殊字符前的字符

心已入冬 提交于 2019-12-09 15:02:14
<template> <div> <button @click="test">点击</button> </div> </template> <script> export default { data() { return { } }, methods: { test() { const Data = [] const arr = ['1s23','2s456','3s890','3s890','156s6','156s6','98s123'] const DATAafter = [] const DATAbefore = [] // substring() 方法用于提取字符串中介于两个指定下标之间的字符。 for( let a of arr) { // console.log(a) //获取所有的字符串 打印结果为 1s23 2s456 3s890 3s890 156s6 156s6 98s123 const Sindex = a.indexOf('s') // 获取 s 在每个字符串中的位置 打印结果为 1 1 1 1 3 3 2 //获取到字符串中每个s所在的位置 下面进行截取。 // 第一 获取s前面的字符串 const before = a.substring(0, Sindex) // 截取s前面的字符串 截取下表从零开始 结束在 Sindex位置 // console

JSTL中foreach与fn表达式

老子叫甜甜 提交于 2019-12-09 14:46:04
在jstl中的fn标签也是我们在网页设计中经常要用到的很关键的标签,在使用的时候要先加上头 <%@ taglib uri=" http://java.sun.com/jsp/jstl/functions " prefix="fn"%>就可以使用fn标签了。 具体使用方法请参见下表: 函数 描述 fn:contains(string, substring) 如果参数string中包含参数substring,返回true fn:containsIgnoreCase(string, substring) 如果参数string中包含参数substring(忽略大小写),返回true fn:endsWith(string, suffix) 如果参数 string 以参数suffix结尾,返回true fn:escapeXml(string) 将有特殊意义的XML (和HTML)转换为对应的XML character entity code,并返回 fn:indexOf(string, substring) 返回参数substring在参数string中第一次出现的位置 fn:join(array, separator) 将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。 fn:length(item) 返回参数item中包含元素的数量

js常用函数整理

家住魔仙堡 提交于 2019-12-07 22:16:24
常用函数 获取十六进制随机颜色 function getRandomColor ( ) { return '#' + ( function ( h ) { return new Array ( 7 - h . length ) . join ( "0" ) + h ; } ) ( ( Math . random ( ) * 0x1000000 << 0 ) . toString ( 16 ) ) ; } getRandomColor ( ) ; //"#272aba" 刷新当前页面 function refreash ( ) { window . location . href = window . location . href ; } 数组中删除一个元素 function removeItem ( arr , item ) { var index = arr . indexOf ( item ) ; if ( index > - 1 ) { arr . splice ( index , 1 ) ; } return arr ; } remove ( [ 1 , 2 , 3 ] , 3 ) ; //[1,2] 判断一个元素是否在一个数组中 function contains ( arr , val ) { return arr . indexOf ( val ) != - 1 ?