C++ 有没有办法通过int指针一次性打印整数? #包括 int main(){ 整数[40]={1,2,3,4,5,6,7,8,9,10,-1}; 整数1[40]; int*ptr; int*ptr1; ptr=整数; ptr1=整数1; 而(*ptr!=-1){ *ptr1++=*ptr++; } *ptr1=-1; ptr1=整数1; 而(*ptr1!=-1){ printf(“\n*ptr1:%d\n”,*ptr1); *ptr1++; } 返回0; }
有没有一种方法可以在不使用循环的情况下一次性打印ptr1指向的整数 编辑:C++ 有没有办法通过int指针一次性打印整数? #包括 int main(){ 整数[40]={1,2,3,4,5,6,7,8,9,10,-1}; 整数1[40]; int*ptr; int*ptr1; ptr=整数; ptr1=整数1; 而(*ptr!=-1){ *ptr1++=*ptr++; } *ptr1=-1; ptr1=整数1; 而(*ptr1!=-1){ printf(“\n*ptr1:%d\n”,*ptr1); *ptr1++; } 返回0; },c++,c,C++,C,有没有一种方法可以在不使用循环的情况下一次性打印ptr1指向的整数 编辑: #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++; } *pt
#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;
}
#包括
int main(){
字符整数[40]={'1','2','3','4','5','6','7','8','9','10','\0'};
字符整数1[40];
char*ptr;
char*ptr1;
ptr=整数;
ptr1=整数1;
而(*ptr!='\0'){
*ptr1++=*ptr++;
}
*ptr1=-1;
ptr1=整数1;
ptr=整数;
printf(“\n*ptr1:%s\n”,ptr1);
printf(“\n ptr:%s\n”,ptr);
返回0;
}
未打印最后一个整数10。而是将其打印为0。为什么要用diff值打印。如果我替换为值9,它将正确显示。对于10及以上的整数,打印第一个数字时留下第二个数字。不,没有。还有一个很好的理由:与
char*
不同,“ints序列的结尾”没有明确的含义,int*
不知道它指向多少个int
有了
char*
我们就有了'\0'
,如果你忘记了这一点,那么像printf(“%s”,cptr)
这样的东西就会坏掉。对于int*
我们没有一个很好的等价物,因为人们经常使用0
。没有。还有一个很好的理由:与char*
不同,“ints序列的结尾”没有明确的含义,int*
不知道它指向多少个int
有了char*
我们就有了'\0'
,如果你忘记了这一点,那么像printf(“%s”,cptr)
这样的东西就会坏掉。对于int*
我们没有一个很好的等价物,因为人们经常使用0
。不在。但是你的问题也被标记了
#包括
#包括
#定义尺寸40
作废我的打印(inti){std::printf(“%d\n”,i);}
int main()
{
整数[大小]={1,2,3,4,5,6,7,8,9,10,-1};
int*end=std::find(整数,整数+大小,-1);
std::for_each(整数、结束、我的_打印);
}
在C++11中,如果需要,可以用lambda替换my\u print
。不在中。但是你的问题也被标记了
#包括
#包括
#定义尺寸40
作废我的打印(inti){std::printf(“%d\n”,i);}
int main()
{
整数[大小]={1,2,3,4,5,6,7,8,9,10,-1};
int*end=std::find(整数,整数+大小,-1);
std::for_each(整数、结束、我的_打印);
}
在C++11中,如果您愿意,可以用lambda替换
my_print
。一次打印是什么意思?你的意思是一次全部吗?不。没有%所有的格式化代码。将它们放在字符数组中(将它们转换为字符)。然后以字符串形式打印。@Angus不,在C语言中没有这样的格式字符串可用,如果您想重复此工作,我建议您编写一个函数(可能是宏)@huseyintugrulbuyukisik,它不会有相同的结果。具有值1
、2
等的char
-数组的打印方式与打印int
s数组的打印方式不同。Plus%s
要求数组以0结尾,而此数组不是。您所说的一次触发是什么意思?你的意思是一次全部吗?不。没有%所有的格式化代码。将它们放在字符数组中(将它们转换为字符)。然后以字符串形式打印。@Angus不,在C语言中没有这样的格式字符串可用,如果您想重复此工作,我建议您编写一个函数(可能是宏)@huseyintugrulbuyukisik,它不会有相同的结果。具有值1
、2
等的char
-数组的打印方式与打印int
s数组的打印方式不同。Plus%s
要求数组以0结尾,而此数组不是。
#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;
}
#include <cstdio>
#include <algorithm>
#define SIZE 40
void my_print(int i) { std::printf("%d\n", i); }
int main()
{
int integers[SIZE] = {1,2,3,4,5,6,7,8,9,10,-1};
int* end = std::find(integers, integers + SIZE, -1);
std::for_each(integers, end, my_print);
}