本人曾有一程序,愿与你共勉: 通过指针变量输出数组的20个元素。 main() { int *p,i,arr[20]; p=arr; for(i=0;i<20;i++) scanf("%d",p++); printf("\n"); for(i=0;i<20;I++,p++) printf("%d",*p);
}
请问我的这个程序对吗? 请提出你宝贵的意见。呵呵......
不敢苟同!如果是简单的程序都不会运用指针,你还指望他在复杂的程序中用吗?
指针是C的灵魂,不会熟练运用指针就不能说学会了C。
呵呵,我是出程序的应用及安全方面考虑, 如果程序因为这样而产生错误或者其他事故, 实在不值得。 你们都说得很对,当然要运用指针,不然就白学了C一趟, 学习归学习,还得注意的,我的意思是:谨慎。 不怕见笑,本人学习指针的时候也经常有此错误, 有时候指针指到哪地方都不知道了, 是于经常发生错误,错在那里也不知道。 为此我把这类错误都硬背了下来, 又抄了几遍,挺傻呆呆的呵呵。 有种“一招被蛇咬,十年怕井绳”的感觉。
斑竹厉害,一眼看到致命的错误。 其实还有一个错误,就没有给p赋值,在main函数中定义的属于局部变量, 我指的是那个数组是一个局部变量,于是其20个值都是随机数而不是0! 最后计算p指针复位,打印出来不是0而是20个随机变量而已。 我姑且说说,致命的还是在指针,不过来讨论一个问题好吗? 它这样写编译时可以通过吗?请在不实践的情况下想一想,到底是会提示什么错误? 是说指针not found呢,还是可以通过而打印出内存地址?或者其它?
[此贴子已经被作者于2004-07-24 15:56:05编辑过]
斑竹厉害,一眼看到致命的错误。
其实还有一个错误,就没有给p赋值,在main函数中定义的属于局部变量,
我指的是那个数组是一个局部变量,于是其20个值都是随机数而不是0!
最后计算p指针复位,打印出来不是0而是20个随机变量而已。
我姑且说说,致命的还是在指针,不过来讨论一个问题好吗?
它这样写编译时可以通过吗?请在不实践的情况下想一想,到底是会提示什么错误?
是说指针not found呢,还是可以通过而打印出内存地址?或者其它?
真不知你在说些什么?
main() { int *p,i,arr[20]; p=arr; for(i=0;i<20;i++) scanf("%d",p++); printf("\n"); p=arr; //就是少了这一句 for(i=0;i<20;i++,p++) printf("%d ",*p);
}
你的那些什么什么问题从何谈起?