摘要: 在写代码常常都会写char * p ="hello";这样的代码,虽然不是错误,但却不建议这样用。应该加const修饰。这句话背后的内涵是什么?下面就刨根问底一下:)这个行为在不同的c和c++的编译器上有会不同的行为,应该说char *a = "hello world";这种写法不能算错误的写法,所以c编译器不报错也不警告。早期的K&C认 为这是完全合法的,但从K&C第二版标准开始就明确指出“修改string literal的结果是未定义的,字符串并不总是可修改的,可能会放在只读内存区域“。从C89开始,这个问题有了更明确的规定。char 阅读全文
posted @ 2013-07-03 18:39 thinkingfor 阅读(5662) 评论(0) 推荐(0) 编辑
摘要: 在chinaunix论坛上有人问到关于变量存府类型的问题,我觉得可以写个测试代码加深大家对内存使用和布局的理解。下面我把原问题及处理办法贴出来,限供大家参考。原问题:static void testB (char *src){ /* 判断传入的src 是属于 @1/2/3 ??? */ do_somthing ();}static void testA (char *src){ char *a = "hello world"; char b[100] = "hello world"; testB (a); ... 阅读全文
posted @ 2013-07-03 14:58 thinkingfor 阅读(4593) 评论(4) 推荐(1) 编辑