m=*p与p=7m是否等价?
当然不等价。赋值号“=”要分方向。 比如a = b和b = a就不同,前者a值变了,后者b值变了。
不等价的,严格说来 int *p,m; *p=m; 是错的,因为这时是把m这个值赋给p所指向的对象,而这里你的指针p未初始化,相当于把m值赋给一个不确定的地址,可能造成危害,严重时导致系统崩溃. 而p=&m是正确的,他是把m的地址赋给p指向,下次对*p的操作与对m的操作等效.
同意楼上的说法,这都是关于变量与内存关系的问题,你用前一种方法写的程序有可能是可以正确执行的,但是存在很大的安全隐患,理解了本质的问题对今后编写大型的严密的的程序非常重要.
问:C语言如果有定义“int m,n=5,*p=&m;”,与m=n等价的语句是______ A m=*p; B *p=*&n C m=&n; D m=**p 请说明一下
答:B . &是地址运算符,*是取值运算符,&n代表变量n的地址(即5的地址),*&n就是取地址&n的值也就是5,语句“*p=*&n"等价于”*p=5",而指...详情>>