首次使用指针,不足之处多多见谅,感谢指教。
//把字符串反转,例如abc,输出cba
#include<stdio.h>
int replace(char* s);//反转函数
int main()
{
char ch[] = "yuhuofei.com.cn";//定义一段字符串
printf("%s\n", ch);
replace(ch);
}
int replace(char *s)//这里定义s表示数据,*s表示地址
{
char *p = s; //把s中的数据传给*p,*p表示数组内部的字符串
int len = 0; //字符串的长度
while (*p != 0)//数组最后一位是“\0”,故用这个判断
{
p++;//地址每增加一位,数组向后算一位
len++;
}
for (len; len > 0; len--)
{
printf("%c", *(s + len-1));//反转输出地址中的字符串
}
}
输出为
好像指针表示地址还是变量这是需要根据代码的情况进行分析吗?
当*s定义一个数值的时候,*s表示数值的数值,s表示地址;
#include<stdio.h>
int main()
{
int a = 10;
int *s = a;
printf("%p",s);
}
输出为:
反之
当s定于一个数值的时候,s表示数值的数值,*s表示地址;
#include<stdio.h>
int main()
{
int a = 10;
int *s = &a;
printf("%p", s);
}
输出为:
如果按照这个道理,我有点不懂我输出的这句话了;
printf("%c", *(s + len - 1));//反转输出地址中的字符串
s表示为数据
s+len-1表示数组的数据,*(s + len - 1)应该表示数组的地址,输出的确实数组的参数;
很费解!!!!
char ch[] = “yuhuofei.com.cn”;//定义一段字符串
数组的地址就是数组名字本身,例如:ch[]地址就是ch;