楼上各位 你们写的都 运行过吗 ? 好象写的都不对啊 !!!!!!!!!!11
楼上各位 你们写的都 运行过吗 ? 好象写的都不对啊 !!!!!!!!!!11
各位兄弟,不就是指针和数组的问题吗??
定义了一个指针后,编译器会随机指定一个值,也就是随机指向一个内存地址,如果这个地址内放着重要的数据,你往这个地址写数据,就会造成严重的问题,这个就是所谓的内存泄漏,所以一般定义一个指针后就会它指定一个地址
比如:
char s[30],*c;
c=s;
那为什么s[30],这个数组所在的地址不会是存放重要数据的地址呢,这个问题编译器会给你解决,编译器在执行到char s[30]时,保证给整个数组的内存地址是一个安全的地址,具体怎么实现的,你还是问问盖茨吧。
我们也可以使用函数malloc自己向操作系统申请一段内存,这段内存的有效期知道你调用free函数将它释放,如:
main()
{
char *c;
c = (char*)malloc(30*sizeof(char));
scanf("%s",c);
printf("%s",c);
free(c);
return 0;
}