1.地址访问方法:
#include<stdio.h>
int main()
{
char str1[] = "I love china",str2[20];
int i;
for (i = 0;*(a+i) != '\0';i++)
{
*(b+i) = *(a+i);
}
*(b+i) = '\0';
printf("The string str1 are :\n",a);
printf("The string str2 are:");
for (i = 0;*(b+i) != '\0';i++)
{
printf("%c",b[i]);
}
printf("\n");
}
分析:首先上面的程序是通过地址访问其数组元素。第一个for循环语句中的条件检查a[i]或(*(a+i))是否是'\0',如果不是则说明字符串尚未处理完,就将a[i]赋值给b[i],实现复制一个字符串。最后for循环之外给b[i] = '\0'结束符。需要注意的是:第2个for循环中的printf("%c",b[i]),而当%s输出时,会出现不止一个字符串。
2.指针变量处理
#include <stdio.h>
int main()
{
char a[] = "I love china",b[20];
char *p1,*p2;
int i;
p1 = a;//使用指针时,必须先使p1和p2的值分别为字符串a和b第1个字符的地址
p2 = b;
for (;*p1 != '\0';p1++,p2++) // p1和p2的值不断改变,必须保证p1和p2同步移动
{
*p2 = *p1;
}
*p2 = '\0';
for (i = 0;b[i] != '\0';i++)
{
printf("%c",b[i]);
}
printf("\n");
}