随笔分类 -  C/C++

摘要:char *s="string"的内容是不可以改的void main(){ char* pStr1 = "Hello!"; char pStr2[] = "Hello!"; change(pStr1); change(pStr2);}void change(char* pInstr){ pInstr[0]='O';}两种change编译都可以通过,但发现第二个change是可以正确地修改第一个字母为'O',而第一个会操作失败导致程序死掉。为什么会这样呢,首先要搞清楚编译程序占用的内存的分区形式:一个由c 阅读全文
posted @ 2013-01-08 22:13 qx.zhong 阅读(207) 评论(0) 推荐(0)
摘要:问:有人告诉我不能在printf中使用%lf。为什么printf()用%f输出double型,而scanf却用%lf呢?答:printf的%f说明符的确既可以输出float型又可以输出double型。根据“默认参数提升”规则(在printf这样的函数的可变参数列表中,不论作用域内有没有原型,都适用这一规则)float型会被提升为double型。因此printf()只会看到双精度数。参见问题15.2。对于scanf,情况就完全不同了,它接受指针,这里没有类似的类型提升。(通过指针)向float存储和向double存储大不一样,因此,scanf区别%f和%lf。下表列出了printf和scanf对 阅读全文
posted @ 2012-10-24 11:10 qx.zhong 阅读(163) 评论(0) 推荐(0)
摘要:原文来自 http://haofu123.blog.163.com/blog/static/178294920096243161997/利用widechartomultibyte来转换的函数通常适合于window平台上使用#include<tchar.h>#include<windows.h>int_tmain(intargc,_tchar*argv[]){wchar_tpwstr[]=l"我是中国人";wchar_tpwstr2[20];char*pcstr=(char*)malloc(sizeof(char)*(2*wcslen(pwstr)+1 阅读全文
posted @ 2012-10-22 16:09 qx.zhong 阅读(311) 评论(0) 推荐(0)