C语言指针变量赋值:哪些操作是错误的?
C语言指针变量赋值:哪些操作是错误的?
假设p1和p2是指向同一个字符的指针变量,c为字符变量,以下哪个赋值语句不能正确执行?
A. c=*p1+*p2
B. p1=p2
C. p1=&c
D. c=*p1*(*p2)
解析:
选项C是错误的。p1和p2是指向同一个字符的指针变量,这意味着它们指向同一个内存地址。而c是一个字符变量,它拥有自己的内存地址。p1=&c试图将p1指向c的地址,这会导致p1不再指向原来的字符,从而导致程序错误。
其他选项解析:
A. c=*p1+*p2:将p1和p2指向的字符的值相加,结果赋值给c,这是正确的。
B. p1=p2:将p2指向的地址赋值给p1,使p1也指向同一个字符,这是正确的。
D. c=*p1*(*p2):将p1和p2指向的字符的值相乘,结果赋值给c,这是正确的。
原文地址: https://www.cveoy.top/t/topic/ngNs 著作权归作者所有。请勿转载和采集!