C语言中指针字符处理如strcmp()...为什么圆括号中不是指针指向,而是指针变量名

如:char *p="12345678",a[9],*pp=a;
strcmp(pp,p)==0

指针指向得到的是一个地址,而变量名指的是整个字符串的内容。
如:char *p="12345678";其实*p等于的值是字符串"12345678"的第一个值。追问

但是pp是一个地址,怎么能比较?换成*pp,*p又为什么不行?你的意思是p的值为12345678吗

追答

PP表示的就是a[9]的值,*pp=a表示是PP指向a的地址,那么*pp的值就是a[9]数组的第一个值,同理*p也就是“123456789”中的“1”,怎么不可以比较,只是现在比较的是,两个char型的值,并不是你想比较的两个字符串的值。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-18
本例中的指针变量是p和pp,而括号中的2个是调用函数中对应的变量,请注意pp和p之间的逗号。。。