C语言之实际问题——指针赋值
代码:
const u8 testbuf[20]={0}
void fun(u8 mode)
{
u8* ptbuf=0;
switch mode:
case 1:
ptbuf = testbuf;
printf(ptbuf);
;break;
case 2:
ptbuf[0]=1;
ptbuf[1]=1;
printf(ptbuf);
;break;
}
上述代码,case1是正确的;
cse2是错误的,函数只分配了ptbuf这个指针的存储空间1个单元,当给赋值ptbuf[0]任然是正确的,但是当赋值ptbuf[1]是就会导致堆栈溢出,产生fault.