char函数

sizeof与strlen的区别

跟風遠走 提交于 2019-12-20 19:53:04
sizeof是一个关键字不是函数,发生在编译时刻。 sizeof是C/C++中的一个运算符,其作用是返回一个对象或者类型在内存中所占用的字节数。 注意:sizeof后面如果是类型则必须加括号,如 sizeof(char);而如果是变量名则可以不加括号,如 sizeof a; 但是建议使用时 均加上括号。sizeof不能返回动态地被分配的数组的大小。 总结如下,当参数分别如下时,sizeof返回的值表示的含义如下: 数组——编译时分配的数组空间大小; 指针——存储该指针所用的空间大小(在32位系统是4,在64系统是8); 类型——该类型所占的空间大小; 对象——对象的实际占用空间大小; 函数——函数的返回类型所占的空间大小。函数的返回类型不能是void strlen是C语言中的库函数,发生在运行时刻,所在头文件为#include <string.h>其函数原型为unsigned int strlen(char *s); 其中s为指定的字符串。 注意:strlen只能用char *作为参数,它求的是字符串的实际长度,方法是从开始到遇到第一个'\0'结束。 sizeof只关心这块内存的大小,不关心这块内存存放了什么数据, strlen只关心这块内存存放的数据,不关心这块内存的大小,直到遇到第一个NULL为止。 二、几个例子 例1: char str[20] = "0123456789";

华为C/C++笔试题(附答案,华为面试题系列)

泪湿孤枕 提交于 2019-12-20 17:13:11
1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用 2.引用与指针有什么区别? 1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。 3.描述实时系统的基本特性 在特定时间内完成特定的任务,实时性与可靠性。 4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 全局变量储存在静态数据库,局部变量在堆栈。 5.什么是平衡二叉树? 左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于1。 6.堆栈溢出一般是由什么原因导致的? 没有回收垃圾资源。 7.什么函数不能声明为虚函数? constructor函数不能声明为虚函数。 8.冒泡排序算法的时间复杂度是什么? 时间复杂度是O(n^2)。 9.写出float x 与“零值”比较的if语句。 if(x>0.000001&&x<-0.000001) 10.Internet采用哪种网络协议?该协议的主要层次结构?

oracle 日期格式

扶醉桌前 提交于 2019-12-20 15:30:01
to_date("要转换的字符串","转换的格式") 两个参数的格式必须匹配,否则会报错。 即按照第二个参数的格式解释第一个参数。 to_char(日期,"转换格式" ) 即把给定的日期按照“转换格式”转换。 转换的格式: 表示year的:y 表示年的最后一位 yy 表示年的最后2位 yyy 表示年的最后3位 yyyy 用4位数表示年 表示month的:mm 用2位数字表示月;mon 用简写形式 比如11月或者nov ;month 用全称 比如11月或者november 表示day的:dd 表示当月第几天;ddd表示当年第几天;dy 当周第几天 简写 比如星期五或者fri;day当周第几天 全写 比如星期五或者friday。 表示hour的:hh 2位数表示小时 12进制; hh24 2位数表示小时 24小时 表示minute的:mi 2位数表示分钟 表示second的:ss 2位数表示秒 60进制 表示季度的:q 一位数 表示季度 (1-4) 另外还有ww 用来表示当年第几周 w用来表示当月第几周。 24小时制下的时间范围:00:00:00-23:59:59 12小时制下的时间范围:1:00:00-12:59:59 比如: select to_char(sysdate,'yy-mm-dd hh24:mi:ss') from dual //显示:08-11-07 13:22:42

《游戏编程模式》(5)

放肆的年华 提交于 2019-12-20 12:05:20
Chatper 11 字节码 通过将行为编码成虚拟机指令,而使其具备数据的灵活性。 解释器模式(慢): 1 class Expression 2 { 3 4 public: 5 virtual ~Expression() {} 6 virtual double evaluate() = 0; 7 8 }; 9 10 class NumberExpression : public Expression 11 { 12 13 public: 14 NumberExpression(double value) 15 : value_(value) 16 {} 17 18 virtual double evaluate() 19 { 20 return value_; 21 } 22 23 private: 24 double value_; 25 26 }; 27 28 class AdditionExpression : public Expression 29 { 30 31 public: 32 AdditionExpression(Expression* left, Expression* right) 33 : left_(left), 34 right_(right) 35 {} 36 37 virtual double evaluate() 38 { 39 //

JNI入门

我与影子孤独终老i 提交于 2019-12-20 10:21:15
学习了一下JNI,发表文章的时候不知道该选什么好了,不知道JNI应该属于那个范畴^_^。       1.简介      JNI是Java Native Interface的缩写,它的设计目的是:      The standard Java class library may not support the platform-dependent features needed by your application.      You may already have a library or application written in another programming language and you wish to make it accessible to Java applications      You may want to implement a small portion of time-critical code in a lower-level programming language, such as assembly, and then have your Java application call these functions       2.JNI的书写步骤      编写带有native声明的方法的java类     

字符串

二次信任 提交于 2019-12-20 09:35:11
【转自】http://www.cnblogs.com/mjios/archive/2013/03/15/2961273.html 本文目录 一、字符串简介 二、字符串的初始化 三、字符串的输出 四、字符串的输入 五、字符串数组 说明:这个C语言专题,是学习iOS开发的前奏。也为了让有面向对象语言开发经验的程序员,能够快速上手C语言。如果你还没有编程经验,或者对C语言、iOS开发不感兴趣,请忽略 一、字符串简介 * 在Java中,一个字符串可以用String类型来存储 String s = "MJ"; C语言中没有String这种类型。其实字符串就是字符序列,由多个字符组成,所以在C语言中,我们可以用字符数组来存储字符串。 * 字符串可以看做是一个特殊的字符数组,为了跟普通的字符数组区分开来,应该在字符串的尾部添加了一个结束标志'\0'。'\0'是一个ASCII码值为0的字符,是一个空操作符,表示什么也不干。所以采用字符数组存放字符串,赋值时应包含结束标志'\0'。 * 字符串"mj"的存储情况如下(假设用字符数组char a[]来存储): 注意了,尾部有个'\0',如果没有这个结束标记,说明这个字符数组存储的并不是字符串 二、字符串的初始化 1 char a[3] = {'m', 'j', '\0'}; 2 3 char b[3]; 4 b[0] = 'm'; 5 b[1] =

游戏编程模式 Game Programming Patterns (Robert Nystrom 著)

安稳与你 提交于 2019-12-20 09:03:31
第1篇 概述 第1章 架构,性能和游戏 (已看) 第2篇 再探设计模式 第2章 命令模式 (已看) 第3章 享元模式 (已看) 第4章 观察者模式 (已看) 第5章 原型模式 (已看) 第6章 单例模式 (已看) 第7章 状态模式 (已看) 第3篇 序列型模式 第8章 双缓冲 (已看) 第9章 游戏循环 (已看) 第10章 更新方法 (已看) 第4篇 行为型模式 第11章 字节码 (已看) 第12章 子类沙盒 (已看) 第13章 类型对象 (已看) 第5篇 解耦型模式 第14章 组件模式 (已看) 第15章 事件队列 (已看) 第16章 服务定位器 (已看) 第6篇 优化型模式 第17章 数据局部性 (已看) 第18章 脏标记模式 (已看) 第19章 对象池 (已看) 第20章 空间分区 (已看) 第1章 架构,性能和游戏    1.1 什么是软件架构 这本书关于代码的组织方式      1.1.1 什么是好的软件架构 第一个关键部分是,架构意味着变化.衡量一个设计好坏的方法就是看它应对变化的灵活性      1.1.2 你如何做出改变 一旦你理解了问题和它涉及的代码,则实际的编码有时是微不足道的      1.1.3 我们如何从解耦中受益 你可以用一堆方式来定义" 解耦 ",但我认为如果两块代码耦合,意味着你必须同时了解这两块代码.如果你让它们解耦,那么你只需了解其一. 当然

MySQL C API

限于喜欢 提交于 2019-12-20 08:51:44
一、数据类型 MYSQL MYSQL 是MYSQL数据库连接的句柄(handle),几乎所有的MYSQL函数都需使用该 数据结构, 不要尝试去复制该数据结构,因为不能保证副本是可用的 。 MYSQL_RES MYSQL_RES 是SQL查询结果(result of query)。 MYSQL_ROW MYSQL_ROW 代表着一行数据,它被实现可数字节的字符串(an array of counted byte strings), 但是认为它是以null为终结符的字符串 ,因为它可能包含二进制 数据。一行数据通常通过 mysql_fetch_row() 来获取。 MYSQL_FIELD MYSQL_FIELD 包含元数据 metadata ,字段的信息(例如字段名,数据类型,大小等) 通常可以通过重复使用 mysql_fetch_field 逐个获取字段,但字段值不包括在这个结构 中,而是包含在 MYSQL_ROW . MYSQL_FIELD的数据成员,当使用在不同场合,它的数据成员有不同含义: char* name : char* org_name : char* table : char* org_name : char* db : char* catlog : char* def : unsigned long length : unsigned long max_length

6-5 字符串的连接 (15分)

大兔子大兔子 提交于 2019-12-20 04:36:32
6-5 字符串的连接 (15分) 本题要求实现一个函数,将两个字符串连接起来。 函数接口定义: char *str_cat( char *s, char *t ); 函数str_cat应将字符串t复制到字符串s的末端,并且返回字符串s的首地址。 裁判测试程序样例: # include <stdio.h> # include <string.h> # define MAXS 10 char * str_cat ( char * s , char * t ) ; int main ( ) { char * p ; char str1 [ MAXS + MAXS ] = { '\0' } , str2 [ MAXS ] = { '\0' } ; scanf ( "%s%s" , str1 , str2 ) ; p = str_cat ( str1 , str2 ) ; printf ( "%s\n%s\n" , p , str1 ) ; return 0 ; } /* 你的代码将被嵌在这里 */ 输入样例: abc def 输出样例: abcdef abcdef char * str_cat ( char * s , char * t ) { strcat ( s , t ) ; return s ; //就是为了记住要return!// } 来源: CSDN 作者:

【原创】初谈缓冲区栈溢出

与世无争的帅哥 提交于 2019-12-20 01:53:35
作者 作者:admin-神风 本文章是为了写出来让人们交流学习的~~末尾我会放上我写这篇文章时所遇到的问题。希望看完本帖的人可以在末尾评论留言自己的问题和解决的答案和思路~ 黑客是一种分享的精神!但现在看来却是在慢慢消失,所以--我希望看完本帖的人们能传递下去! 由于技术问题 本帖有错误的地方望各位大牛斧正! 缓冲区溢出介绍    缓冲区溢简单说,是大的数据存入了小缓冲区,又不对存入数据进行边界判断,最终导致小缓冲区被撑爆。大的数据污染了小缓冲区附近的内存。污染的内存可能带来改变程序控制流、夺取操作系统、禁止访问等多种结果。就好比一杯水,倒满了水 多余的就溢出到外面来了。    缓冲区溢出主要可以分成三种:静态数据溢出、栈溢出和堆溢出。产生这三种不同的溢出根源在于win的内存结构;win的内存可以被分成两个层面:物理内存和虚拟内存。我们一般看到的其实只是windows的虚拟内存。在XP下windows会给所有进程都分配4G内存(无论物理内存真实多大);windows会把4G内存分成代码区、数据区、堆区、栈区。数据区存储的是进程的全局变量。如果利用这里的数据进行缓冲区溢出那么就被称为静态数据溢出。同样利用栈区和堆区进行缓冲区溢出,则相应被称作栈溢出和堆溢出。静态数据溢出虽然技术难度低但是灵活性和可以利用范围低,所以本文就不介绍了。堆溢出相对复杂,将在别的文章介绍