char ch0[10] = "hello";
char ch1[10];
void main(){
clrscr();
char *pt0 = ch0;
char *pt1 = ch1;
puts(pt0);
while(*pt0 != '\0')
{
*pt1++ = *pt0++;
}
*pt1 = '\0';
printf("value of ch1 =");
for(int i = 0; i < sizeof(ch1); i++){
printf("%c",ch1[i]); // prints value correctly
}
putchar('\n');
printf("pointer pt1 value = %c",*pt1); // gives garbage value
getch();
}
指针pt1
值无法访问,但ch1
指向正确的值。
如何访问pt1?
我指点不好只能解释我的工作场景
output:
hello
value of ch1 =hello
pointer pt1 value= \\garbage value
答案 0 :(得分:3)
在我看来,您需要重置pt1
。复制循环后,它指向ch1
数组中字符串的结尾。
所以,在行之后:
*pt1='\0';
pt1
指向ch1
中字符串的结尾。因此,要将其打印出来,您需要将其重置为ch1
。
答案 1 :(得分:0)
在您的代码中,您正在递增指针 ptr1 ,然后将您的分配值&#34; NULL&#34; 。因此 ptr1 不再包含 ch1 字符串。
为了更好地理解,您可以打印 ch1 和 ptr1 的地址。你会明白的更好