char函数

C语言面试题(四)--------------------网上题目

别来无恙 提交于 2019-12-17 16:14:31
1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 注:此题我在Xcode上用了来,的确,如果是两个循环的话,都可以用同名的变量,这在objective-c中是可以的,但我不记得在Java和C中是否可以了 2、如何引用一个已经定义过的全局变量? 答:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个编写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么? 答:可以,在不同的C文件中以static形式来声明同名全局变量。 可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错. 4、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答: 1) 全局变量

cocos2dx基础篇(5) 按钮

↘锁芯ラ 提交于 2019-12-17 14:37:05
这篇是直接复制的别人的,太多了,难得写。。。 【本节内容】 CCMenu、CCMenuItem 其具体的六个子类 【菜单CCMenu】 菜单 CCMenu 是用来装载菜单按钮的 图层 ,图层中的子节点只能够是菜单项CCMenuItem或其子类。一般我们先创建菜单项 CCMenuItem ,然后使用一个或多个菜单项生成菜单CCMenu,最后把CCMenu加入当前图层。 由于CCMenu的父类为CCLayer,锚点为(0,0),无法设置锚点。 CCMenu的默认原点坐标为屏幕正中心(winSize.width/2, winSize.height/2)。 CCMenuItem是添加在CCMenu层中的,所以CCMenuItem的位置是相对于CCMenu层的偏移位置。CCMenuItem相对于CCMenu的偏移量默认为(0,0),且菜单项的锚点默认为(0.5,0.5)。 常用操作: class CC_DLL CCMenu : public CCLayerRGBA { /** * 创建菜单的三个常用方法 */ //创建一个空菜单 static CCMenu* create(); //CCMenu::create(item1,item2,item3,NULL); //用CCMenuItem菜单项创建菜单,最后以NULL表示结束. static CCMenu* create(CCMenuItem

File,FileInputStream,FileReader,InputStreamReader,BufferedReader

时光怂恿深爱的人放手 提交于 2019-12-17 11:44:44
File,FileInputStream,FileReader,InputStreamReader,BufferedReader 使用 Java 操作文本文件的方法详解 http://java.ccidnet.com/art/3737/20041108/523627_1.html FileReader 是什么类?和 FileInputStream 有什么不同??? http://book.hackbase.com/ask2/ask107572.htm 自己的整理和领会: 引言: C语言只需要一个File*就可以了,与C不同,java有一系列流类型,其数量超过60种。类库的设计者声称:“有足够的理由为用户提供丰富的流类型的选择:这样做可以减少程序的错误。”例如,在C语言种,许多人认为“将输出流写入一个只读模式的文件”是很常见的错误。(事实上,这并不常见。)我们认为在C++语言中,流接口设计者避免程序出错的主要“工具”是小心谨慎的态度,在java语言中更是如此。流库的高度复杂性迫使程序设计人员谨小慎微。 1.File类 1)File 类介绍(《 core java 》638 页) File 类封装了对用户机器的文件系统进行操作的功能。例如,可以用 File 类获得文件上次修改的时间移动,或者对文件进行删除、重命名。换句话说,流类关注的是文件内容,而 File

IDT系统中断描述表以及绕过Xurtr检测的HOOK姿势

半城伤御伤魂 提交于 2019-12-17 10:49:01
什么是中断? 指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。 比如:除零(0号中断)、断点(3号中断)、系统调用(2e号中断)、以及异常处理等都会引发中断,所以自然需要相应的中断例程去进行处理。 这样操作系统就会用数据结构来维护这些中断例程,这个数据结构就是IDT(Interrupt Descriptor Table)。 中断描述表 IDT表的长度与地址是由CPU的IDTR寄存器来描述的。IDTR寄存器共有48位,高32位是IDT表的基地址,低16位是IDT的长度。 typedef struct _IDTR{ USHORT IDT_limit; USHORT IDT_LOWbase; USHORT IDT_HIGbase; }IDTR,*PIDTR; IDTR idtr; __asm SIDT idtr; 可以通过以上SIDT指令可以读取IDTR寄存器。然后通过MAKEWORD宏把高位与地位组合起来就可以获得IDT表的基地址了。 简单来说,IDT表是一张位于物理内存的线性表,共有256个表项。在32位模式下,每个IDT表项的长度是8个字节(64 bit),IDT表的总长度是2048字节。 kd> r idtr idtr

c++ 指针小计

匆匆过客 提交于 2019-12-17 10:17:25
c++ 指针小计 什么时指针: 指针是存入指定数据类型地址的一种变量,void * 指针类型的指针可以存放任何数据类型的指针。 定义和声名指针变量: 由数据类型后跟星号,再跟随指针变量名组成。如 int *ip;指针在使用前,要进行初始化。 如int count =10;int *count = &count;如果忘记了给指针赋值是非常危险的。因为指针在没有初始化时存放的是一个随机的地址,此时如果给指针赋值(*count = 20;)是把20赋到了内存中的随机位置,因此很可能破坏系统中的另一变量甚至修改栈中的函数返回地址。 "*": 此符号的用法很多,*放在可执行语句中的指针之前,称为间接引用操作符(可取出指针指向变量的值),*放在指针定义中,称指针定义符(用于定义一个指针变量)*放在表达式中用于乘法运算符,且不能放在非指针变的前面。 指针的地址: 指针是变量是变量也有地址,我们可以用&取地址符取得指针变量的地址,如:int *ip = &count;用&ip得到指针变量的地址。 指针是强类型化的: 给指针赋值,不但必须是一个地址,而且应该是一个与该指针类型相符的变量或常量的地址。 指针运算: 指针只能用于加,减运算。 数组名称也是一个指针常量 ,如int a[100];中a == &a[0]的。即是数组第一个元素的地址。 指向常量的指针: 在指针定义语句的类型前加const

android声音通道的切换

偶尔善良 提交于 2019-12-17 07:52:01
android声音通道的切换 转载 neverbefat 发布于2016-11-30 14:44:01 阅读数 6199 收藏 展开 在进行通道切换时,为什么会在原通道上设置一回在去设置新的通道 一、Application framework 在Application framework层级是app层的code,是通过android.media提供的API来与audio硬件进行交互动作,这部分的代码是通过audio JNI来调用native代码从而达到影响硬件的效果; 二、JNI JNI部分的代码是位于 frameworks/base/core/jni/和frameworks/base/media/jni 目录下的; 三、Native framework 四、Binder IPC Binder IPC通信是跨进程通信的手段,audio的这部分代码位于frameworks/av/media/libmedia目录下,并且命名都是以I开头的; 五、Media Server Audio Service是隶属Media Server的,其代码位于 frameworks/av/services/audioflinger,它是真正的与HAL层的实现进行交互的; 六、HAL HAL层定义了Audio Service调用的标准接口

VC常用数据类型使用转换详解

可紊 提交于 2019-12-17 02:27:41
VC常用数据类型使用转换详解 出 处:PCVC.NET 作 者:程佩君 刚接触VC编程的朋友往往对许多数据类型的转换感到迷惑不解,本文将介绍一些常用数据类型的使用。 我们先定义一些常见类型变量借以说明 int i = 100; long l = 2001; float f=300.2; double d=12345.119; char username[]="女侠程佩君"; char temp[200]; char *buf; CString str; _variant_t v1; _bstr_t v2; 一、其它数据类型转换为字符串 短整型(int) itoa(i,temp,10);///将i转换为字符串放入temp中,最后一个数字表示十进制 itoa(i,temp,2); ///按二进制方式转换 长整型(long) ltoa(l,temp,10); 二、从其它包含字符串的变量中获取指向该字符串的指针 CString变量 str = "2008北京奥运"; buf = (LPSTR)(LPCTSTR)str; BSTR类型的_variant_t变量 v1 = (_bstr_t)"程序员"; buf = _com_util::ConvertBSTRToString((_bstr_t)v1); 三、字符串转换为其它数据类型 strcpy(temp,"123"); 短整型(int) i

C:字符串数组作为函数参数

依然范特西╮ 提交于 2019-12-16 23:39:53
# include <stdio.h> /* void PrintStr(char s[][50], int n) { int i = 0; for ( i = 0; i < n; i ++ ) { puts(s[i]); } } */ int main ( ) { /* char arr[][50] = { "hello", "world", "i like c" }; PrintStr(arr, 3); */ int i = 0 ; char arr [ 12 ] = { 0 } ; // DoS // WAF scanf ( "%d" , & i ) ; getchar ( ) ; gets ( arr ) ; if ( i == 0 ) { printf ( "%s \r\n" , arr ) ; } else { printf ( "error \r\n" ) ; } return 0 ; } 来源: CSDN 作者: hahahafree 链接: https://blog.csdn.net/weixin_43731793/article/details/103570853

[APUE]标准I/O库

独自空忆成欢 提交于 2019-12-16 17:26:12
   一、流和FILE对象   标准I/O库对应文件的操作是围绕流(stream)进行的。当用标准I/O库打开或创建文件时,便使一个流与一个文件相关联。标准I/O库的函数对于文件的描述是基于FILE对象指针的,该对象是一个结构体,包含了I/O库管理流所需要的全部信息:用于实际I/O的文件描述符、指向流缓存的指针、缓存长度、当前在缓存中的字符数、出错标志等。   在标准I/O中,一个打开的文件称为流(stream),流可以用于读(输入流)、写(输出流)或者是读写(输入输出流)。每个进程在启动后就会打开三个流,与打开的三个文件相对应:stdin代表标准输入流,stdout代表标准输出流,stderr代表标准错误输出流,它们都是(FILE*)型的指针。   二、缓存   有缓存就会有延迟,即输出设备上的内容和缓存中的内容很可能不一样。可以调用fflush刷新缓存。   有多种缓存类型,可以调用下面的API来更改默认缓存类型:setbuf, setvbuf。   setvbuf可以精确的说明缓存的类型;fclose关闭流时也会刷新流。   当一个进程正常终止时(直接调用exit或从main函数返回),则所有带未写缓存数据的标准I/O流都会被刷新,所有打开的标准I/O流都会被关闭。   三、与Unix I/O的区别   UNIX I/O的函数都是针对文件描述符的,而标准I

C#的String.Split 方法

痞子三分冷 提交于 2019-12-16 14:46:35
String.Split 方法有6个重载函数: 程序代码 1) public string[] Split(params char[] separator) 2) public string[] Split(char[] separator, int count) 3) public string[] Split(char[] separator, StringSplitOptions options) 4) public string[] Split(string[] separator, StringSplitOptions options) 5) public string[] Split(char[] separator, int count, StringSplitOptions options) 6) public string[] Split(string[] separator, int count, StringSplitOptions options) 下边我们通过一些实例来说明下怎么使用(以下string words = "1,2.3,,4";) 1. public string[] Split(params char[] separator) 程序代码 string[] split = words.Split(new Char[] { ',' });//返回