第1个回答 2013-07-24
请重新学习c语言“数组”相关知识。
char * string="xxx";
实际上是叫编译器给你分配4字节的数组内存(不是3,因为子串尾部是'\0'),string是指向该数组首地址的指针。
printf("%s",string);中参数必须是地址,刚才说了,string应该是字符数组的地址,*string是字符串“xxx”中的第一个"x“。
这样说你明白了吧,如果还不清楚,请追问。
第2个回答 2013-07-24
1、写成 char* string=“xxx”;是不是看着明白些了? char* 表示便令类型为字符指针,变量名为string;所以输出时写string而不是*string;
2、p=&a ,&表示引用,引用的结果是p和a的存储地址是一样的,他们的数据取值是一样的,p=&a,则*p=*&a;*和&可以看做抵消就是*p=a,所以第二个写作*P,而不是p;
3、不明白的话可以看看指针和引用的定义和使用。指针灵活,引用简单,多用就好了。
第3个回答 2013-07-24
指针就是地址。
printf()函数的格式控制,%d是输出一个整型数据,因此要用*p。
%s是输出一个字符串,因此要用字符串的首地址,char *str,str就是指向字符串的首地址。
如果用*string,就是printf("%c",*string),输出第一个字符。
第4个回答 2013-07-24
字符串指针是指向字符串的首地址,就像数组一样,数组名就是首地址,这也是一样。输出字符串直接用指针名就可以了。
*p。*加指针名是取指针所指向的地址的值。这里指针p指向整形a的地址,取地址的值就是a的值。