一些c语言基础知识,运行之后结果不理解。
结果:void main() { int a[5]; int i; int *p[5]; for(i = 0; i < 5; i++) { int b[5] = {1,2,3,4,5}; p[i] = &b[i]; printf("p is %d\n",*p[i]); } memset(a,0,sizeof(a)); for(i=0;i<5;i++) { printf("p[%d] is %d\n",i,*p[i]); } }
为什么memset a,结果p也变成0了?p is 1 p is 2 p is 3 p is 4 p is 5 p[0] is 0 p[1] is 0 p[2] is 0 p[3] is 0 p[4] is 0
将memset注释掉,后面打印的就是p[0] is 1 p[1] is 2 p[2] is 3 p[3] is 4 p[4] is 5
2.
void func(char *num)
{
*num = 10;
}
int main(int argc, char *argv[])
{
int inc=0;
func((char*)&inc);
printf("inc is %d\n", inc);
return 0;
}
运行结果
inc is 32522
为什么不初始化inc, 结果会变成32522. 如果说因为没初始化不知道数值是多少,后面func操作不是赋值了吗?
如果初始化inc = 0, 打印出来的就是10了