[英]C++ - Returning an array to main function and passing array to another function
[英]How to edit an array in another function than the main function in c programming?
我想將數組中的每個元素增加一個 function 而不是主 function。 然后,我想調用這個 function 並在主 function 中打印。
#include <stdio.h>
int function(int array2[5]) {
int i;
while(i<4) {
array2[i]=array2[i]+1;
i++;
}
return array2[5];
}
int main() {
int array[5]={1,2,3,4,5};
int answer;
answer[5]=function(array[5]);
int j;
while(j<4) {
printf("%d \n",answer[j]);
j++;
}
return 0;
}
一些重要的事情要知道:
array[5]
為您提供 array 中的第 6 個元素,但int array[5]
array
了一個包含 5 個元素的數組。int answer
它不是一個數組,也不能成為一個數組。 它只是一個int
function 的返回類型int
沒有意義。
int function(int array2[5]) {
此外,您正試圖返回僅包含 5 個元素的數組中不存在的第 6 個元素。
return array2[5];
在 function 中,您使用的是未初始化的變量i
int function(int array2[5]) {
int i;
while(i<4) {
//...
這會導致未定義的行為。 此外,使用的幻數4
至少沒有任何意義,因為您試圖將具有5
元素的數組傳遞給 function。
function 應使用第二個參數聲明,該參數指定傳遞數組中的元素數。 本 function 聲明
int function(int array2[5]);
並不意味着傳遞給 function 數組的元素正好有5
。 編譯器會將 function 的參數聲明調整為指向數組元素類型的指針,如
int function(int *array2);
在這個主要的聲明中
int answer;
answer[5]=function(array[5]);
您正在使用帶有標量類型int
的 object 的下標運算符。 所以編譯器會發出錯誤信息。
這是一個演示程序,展示了如何定義 function。
#include <stdio.h>
void function( int a[], size_t n )
{
for ( ; n--; ++a )
{
++*a;
}
}
int main(void)
{
int a[] = { 1, 2, 3, 4, 5 };
const size_t N = sizeof( a ) / sizeof( *a );
for ( size_t i = 0; i < N; i++ )
{
printf( "%d ", a[i] );
}
putchar( '\n' );
function( a, N );
for ( size_t i = 0; i < N; i++ )
{
printf( "%d ", a[i] );
}
putchar( '\n' );
return 0;
}
程序 output 是
1 2 3 4 5
2 3 4 5 6
那里有 go。 我想這就是你想要的:
#include <stdio.h>
// Since the array named parameters are scoped only within its function,
// they are apart from your array in the main.
void function(int array[], int len) {
int i = 0;
while(i<len) {
array[i]=array[i]+1;
i++;
}
}
// Or alternatively you can process the array using a pointer
void functionWithPointer(int *array, int len) {
int i = 0;
while(i<len) {
*(array+i) = *(array+i)+1;
i++;
}
}
int main() {
int array[]={1,2,3,4,5};
// int answer; // Not necessary
int length = sizeof(array) / sizeof(int); // !!!ATTENTION
function(array, length);
// The array values updated by 1
printf("Array values after 1st update\n");
for(int k=0; k<length; k++) {
printf("%d \n",array[k]);
}
functionWithPointer(array, length);
// The array values updated by 1 again
printf("Array values after 2nd update\n");
int j;
while(j<length) {
printf("%d \n",array[j]);
j++;
}
return 0;
}
這是 output:
Array values after 1st update
2
3
4
5
6
Array values after 2nd update
3
4
5
6
7
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.