- 博客(14)
- 收藏
- 关注
原创 字符串数组的初始化问题
对于早期的编译器,对楼主的程序可能不会报错或警告,但是,更符合标准的编译器,一定会有警告甚至报错的. 楼主的程序准确的写法应该是这样的: void main() { const char *s= "hello ";//此处加了个const修饰. s[0]= 'X '; } 简单地说,除了存在栈和堆上的字符串才不是字符串常量.其余的都是字符串常量. 举一个例子:char buffer[20]= "hello ";这个字符串是用来初始化字符数组buffer的,存在栈上,不是一个字符串常量
2010-06-23 12:24:00
1734
原创 C/C++函数调用约定之间的转换
C语言的初学者常犯的一个失误是调用系统或第三方API时忘了在函数声明中标注WINAPI调用方式,而菜鸟C++程序员也每每困惑为什么成员函数必须指示为CALLBACK再添加static关键字才能作为回调函数。在x86系统中,存在多种函数调用约定。如果调用者与被调用者采用不同的调用约定,很可能导致堆栈破坏、非法访问等致命错误。 也许您会得出一个结论,除非借助汇编指令,否则调用约定之间的转换是不可能的。
2010-04-12 15:14:00
633
原创 extern用法详解(转)
1 基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 另外,extern也可用来进行链接指定。2 问题:extern 变量 在一个源文件里定义了一个数组:char a[6]; 在另外一个文件里用下列语句进行了声明:extern char *a; 请问,这样可以吗? 答案与
2010-03-15 12:28:00
387
原创 c语言提供的合法的数据类型关键字
悬赏分:0 - 解决时间: 2009年04月25日 12时35分4个答案。 a/long b/Short c/integer d/Char别忘记解释下阿各位大哥.谢谢啦提问者: 木落小人 - 见习魔法士 二级 发消息 加为好友 最佳答案long 长整形short 短整形 注意s 是小写 大写了就不是关键字了integer 也就是 int 不过貌似不在c里
2010-03-15 12:11:00
11901
原创 typedef struct与struct的区别
1. 基本解释typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。2. typedef &
2010-03-11 14:41:00
417
原创 GetMemory错误讲解(指针练习)
错误程序:void GetMemory( char *p ){ p = (char *) malloc( 100 );}void Test( void ) { char *str = NULL; GetMemory( str ); strcpy( str, "hello world" ); printf( “%s”,str );} 这个一个考验对指针理解的题目,上面程序在运行之后:
2010-03-11 10:17:00
434
原创 面试常见问题解析
[ 作者:管理员 所属单位:就业指导中心 转贴自:就业指导中心 点击数:2486 ] 在用人单位的面试过程中,最大的困难就是如何回答面试人员的问题。其实如果你能够好好准备,加上临场镇定的表现和充分的发挥,你一定能够轻松过关。下面就是用人单位面试过程常见的问题以及这些问题背后的指向。一、性格、工
2010-03-10 14:03:00
515
原创 C语言中的字对齐
声明:本文是本人在学习过程中看到的文章,感觉讲解的非常透彻,出处已经不知道了,如有侵权请联系本人! 一、什么是对齐,以及为什么要对齐: 1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 2. 对齐
2010-03-10 13:49:00
416
原创 inline
一、inline 关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。 表达式形式的宏定义一例: #define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2)) 为什么要取代这种形式呢,且听我道来: 1. 首先谈一下在C中使用这种形式宏定义的原因,C语言是一个效率很高的语言,
2010-03-10 10:08:00
316
原创 宏的一些副作用
1、优先级问题 1) 传入变量优先级 #define MULTI(a,b) a * b MULTI(1+2,3) => 1 + 2 * 3 其实是想要(1 + 2) * 3 2) 作为值返回时,类似1) #define ADD(a,b) (a) + (b) int c = ADD(a,b) * 3; => (a) + (b) * 3 其实是想要(a +
2010-03-10 09:59:00
1046
1
原创 面试2
1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清
2010-03-08 09:30:00
560
转载 转]C,C++经典问题,及面试笔试题
1 编程基础1.1 基本概念1. 的理解:const char*, char const*, char*const的区别问题几乎是C++面试中每次 都会有的题目。 事实上这个概念谁都有只是三种声明方式非常相似很容易记混。 Bjarne在他的The C++ Programming Language里面给出过一个助记的方法: 把一个声明从右向左读。 constc
2010-03-08 09:22:00
432
原创 深入分析Windows和Linux动态库应用异同
摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理。但不同操作系统的动态库由于格式 不同,在需要不同操作系统调用时需要进行动态库程序移植。本文分析和比较了两种操作系统动态库技术,并给出了将Visual C++编制的动态库移植到Linux上的方法和经验。
2010-03-05 14:27:00
346
原创 从今天开始,这个blog就是我的笔记了,java学习笔记!wulllllllllllllllllllla!!!
开始看thinking in java ,今天把第三章看完,视频没有讲,老子不想看没,妈妈的类,对象,方法,变量,都是什么跟什么啊 文字游戏而已吧
2007-06-20 16:56:00
521
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人