在函数传递值的过程中,一般都是值传递但是数组确实传递的指针,这样主要用于避免过多数据复制占用过多的内存空间。
我们在设置函数的时候可以使用
int puta(const int geta[],int s_a) 来避免原始数组受到修改,
如此的话修改会报错
input.cpp: In function ‘int puta(const int*, int)’:
input.cpp:49:11: error: assignment of read-only location ‘*(geta + ((sizetype)(((long unsigned int)i) * 4ul)))’
geta[i] = ipu;
下面是一个相关的例子
这里使用函数传入值,同时检测输入的值是否合法
8 #include
9 using namespace std;
10
11 int puta(int *geta,int s_a);
12
13 int main(void)
14 {
15 int geta[10];
16 // puta(geta,sizeof(geta)/sizeof(int));
17 if(!(puta(geta,sizeof(geta)/sizeof(int))))
18 {
19 for(int i = 0;i<sizeof(geta) sizeof(int);i++) 20 {
21 cout<<geta[i]<<endl;
22 }
23 }
24 else
25 {
26 cout<<"error input!\n";
27 }
28
29 }
30
31 int puta(int geta[],int s_a)
32 {
33 int i;
34 int ipu;
35 for(i=0;i<s_a;i++)
36 {
37 if(!(cin>>ipu)) //cin>>check ipu data is adjust return true else return flase
38 {
39 cin.clear(); //clear cin flag
40 while(cin.get() !='\n') //clear stdout buffer
41 continue;
42 cout<<"error input!\n";
43 return 1;
44 }
45 else if (ipu<0)
46 {
47 return 1;
48 }
49 geta[i] = ipu;
50 }
51 return 0;
52 }
</s_a;i++)
</geta[i]<<endl;
我们在设置函数的时候可以使用
int puta(const int geta[],int s_a) 来避免原始数组受到修改,
如此的话修改会报错
input.cpp: In function ‘int puta(const int*, int)’:
input.cpp:49:11: error: assignment of read-only location ‘*(geta + ((sizetype)(((long unsigned int)i) * 4ul)))’
geta[i] = ipu;
下面是一个相关的例子
这里使用函数传入值,同时检测输入的值是否合法
8 #include
9 using namespace std;
10
11 int puta(int *geta,int s_a);
12
13 int main(void)
14 {
15 int geta[10];
16 // puta(geta,sizeof(geta)/sizeof(int));
17 if(!(puta(geta,sizeof(geta)/sizeof(int))))
18 {
19 for(int i = 0;i<sizeof(geta) sizeof(int);i++) 20 {
21 cout<<geta[i]<<endl;
22 }
23 }
24 else
25 {
26 cout<<"error input!\n";
27 }
28
29 }
30
31 int puta(int geta[],int s_a)
32 {
33 int i;
34 int ipu;
35 for(i=0;i<s_a;i++)
36 {
37 if(!(cin>>ipu)) //cin>>check ipu data is adjust return true else return flase
38 {
39 cin.clear(); //clear cin flag
40 while(cin.get() !='\n') //clear stdout buffer
41 continue;
42 cout<<"error input!\n";
43 return 1;
44 }
45 else if (ipu<0)
46 {
47 return 1;
48 }
49 geta[i] = ipu;
50 }
51 return 0;
52 }
</s_a;i++)
</geta[i]<<endl;