我试图用指针复制c中的字符串
在我看来,您只需重置我试图用指针复制c中的字符串,c,pointers,C,Pointers,在我看来,您只需重置pt1。在复制循环之后,它指向ch1数组中字符串的末尾 因此,在这一行之后: output: hello value of ch1 =hello pointer pt1 value= \\garbage value pt1指向ch1中字符串的末尾。所以,要打印出来,您需要将其重置回ch1在我看来,您只需要重置pt1。在复制循环之后,它指向ch1数组中字符串的末尾 因此,在这一行之后: output: hello value of ch1 =hello pointer pt1
pt1
。在复制循环之后,它指向ch1
数组中字符串的末尾
因此,在这一行之后:
output:
hello
value of ch1 =hello
pointer pt1 value= \\garbage value
pt1
指向ch1
中字符串的末尾。所以,要打印出来,您需要将其重置回ch1
在我看来,您只需要重置pt1
。在复制循环之后,它指向ch1
数组中字符串的末尾
因此,在这一行之后:
output:
hello
value of ch1 =hello
pointer pt1 value= \\garbage value
pt1
指向ch1
中字符串的末尾。因此,要打印出来,您需要将其重置回ch1
您的代码中有一个输入错误:
*pt1='\0';
或许应该是:
char *pt0 =ch;
您的编译器应该注意到这一点,但为了保持一致性,也许在这里更正它会更好。除此之外,bruceg的答案是正确的。您的代码中有一个输入错误:
*pt1='\0';
或许应该是:
char *pt0 =ch;
您的编译器应该注意到这一点,但为了保持一致性,也许在这里更正它会更好。除此之外,bruceg的答案是正确的。在您的代码中,您将递增指针ptr1,然后至少将赋值“NULL”。因此,ptr1不再持有ch1字符串
为了更好地理解,您可以打印ch1和ptr1的地址。您将更好地理解代码中的,您将递增指针ptr1,然后再将赋值“NULL”。因此,ptr1不再持有ch1字符串
为了更好地理解,您可以打印ch1和ptr1的地址。您将更好地理解请花一些时间正确地缩进/分离代码。复制后,
pt1
指向ch1[5]
,其值为\0
。OT:main()
返回int
notvoid
。添加pt1=ch;在*pt1='\0'之后;将for循环替换为printf(“%s”,ch1);“垃圾价值”是什么意思?我在gcc c99上运行了您的代码(经过一些小的修改),但它基本上没有打印任何内容(嗯,打印了“/0”字符,也称为ascci 0)。请花一些时间正确地缩进/分离代码。复制后,pt1
指向ch1[5]
,其值为\0
。OT:main()
返回int
notvoid
。添加pt1=ch;在*pt1='\0'之后;将for循环替换为printf(“%s”,ch1);“垃圾价值”是什么意思?我在gcc c99上运行了您的代码(经过一些小的修改),它基本上没有打印任何内容(好吧,打印了“/0”字符,也称为ascci 0)