#include<stdio.h>
int main(){
int integers[40] = {1,2,3,4,5,6,7,8,9,10,-1};
int integers1[40];
int *ptr;
int *ptr1;
ptr = integers;
ptr1 = integers1;
while(*ptr != -1){
*ptr1++ = *ptr++;
}
*ptr1 = -1;
ptr1 = integers1;
while(*ptr1 != -1){
printf("\n *ptr1 : %d \n",*ptr1);
*ptr1++;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在不使用循环的情况下一次打印ptr1指向的整数?
编辑:
#include<stdio.h>
int main(){
char integers[40] = {'1','2','3','4','5','6','7','8','9','10','\0'};
char integers1[40];
char *ptr;
char *ptr1;
ptr = integers;
ptr1 = integers1;
while(*ptr != '\0'){
*ptr1++ = *ptr++;
}
*ptr1 = -1;
ptr1 = integers1;
ptr = integers;
printf("\n *ptr1 : %s \n",ptr1);
printf("\n ptr : %s \n",ptr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
最后一个整数10没有打印出来.相反,它打印为0.为什么打印具有diff值?.如果我用值9替换它,它会正确显示.对于10个及以上的整数,它打印第1个数字,留下第二个数字.
不,没有.这也是一个很好的理由:不像char*" ints 序列的结尾"没有明确的含义,int*也不知道int它指向的是多少.
有了char*我们'\0',如果你忘了这个,那么printf("%s", cptr)会破坏的东西.int*由于人们使用0了很多,我们没有相当不错的等价物.