您的位置:首页 > 其它

经常忘记的东西

2012-03-14 10:29 232 查看


字符串以引号“abc”的形式赋值时,会在后面再加一个'\0'

char b[3] = "bcd" ,编译器会报错,越界

strlen(e或者f)不确定,因为这种以大括号赋值的方法,不会添加'\0'

这些东西看起来很小儿科,你都滚瓜烂熟了么?

///////////////////////////////////////////////////////////////////////////////

关于内存分配:

int a = 0; 全局初始化区

char *p1; 全局未初始化区

main()

{

int b; 栈

char s[] = "abc"; 栈

char *p2; 栈

char *p3 = "123456"; 123456在常量区,p3在栈上。

static int c =0; 全局(静态)初始化区

p1 = (char *)malloc(10);

p2 = (char *)malloc(20);

分配得来得10和20字节的区域就在堆区。

strcpy(p1, "123456"); 123456放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: