Arrays 在c编程中,如何在主函数之外的其他函数中编辑数组?
我想在另一个函数中将数组中的每个元素增加一个,而不是主函数。然后,我想调用这个函数并在main函数中打印Arrays 在c编程中,如何在主函数之外的其他函数中编辑数组?,arrays,c,increment,function-definition,Arrays,C,Increment,Function Definition,我想在另一个函数中将数组中的每个元素增加一个,而不是主函数。然后,我想调用这个函数并在main函数中打印 #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,
#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;
}
需要了解的一些重要事项: 在C中传递数组时,不进行复制。它是同一个数组,因此修改传入的数组会修改原始数组。 []是运算符,不是变量名的一部分。 []在声明类型时的工作方式与在表达式中使用时不同。数组[5]给出了数组中的第6个元素,但int数组[5]声明了一个包含5个元素的数组。 访问分配数组末尾以外的元素具有未定义的行为,但通常会崩溃。 如果声明变量int-answer,则它不是数组,不能成为数组。它只是一个int 如果要创建数组的副本,则需要显式复制。有一些标准库可以做到这一点,但您应该学会将每个元素逐个复制到新数组中。
好了。我想这就是你想要的: 包括 //由于命名参数数组的作用域仅限于其函数内, //它们主要与您的阵列分开。 无效函数int数组[],int len{ int i=0; 而函数的返回类型int没有意义
int function(int array2[5]) {
而且,您试图返回一个只有5个元素的数组中不存在的第6个元素
return array2[5];
在函数中使用未初始化的变量i
这并不意味着传递给函数数组的正好有5个元素。编译器将调整函数的参数声明,使其指针指向数组元素类型,如
int function(int *array2);
在本声明中,主要
int answer;
answer[5]=function(array[5]);
您正在对标量类型int的对象使用下标运算符。因此编译器将发出错误消息
下面是一个演示程序,演示如何定义函数
#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;
}
声明数组[5]时会给出大小,但在此之后,它会访问数组中的第6个元素。而answer根本不是数组。请说明您认为这意味着什么,做了什么,以及编译器对此有什么警告或错误,特别是在有严格警告的情况下:answer[5]=functionarray[5].为此,您必须编译您在这里展示的代码,我怀疑这是您家里的代码。也就是说,请确保您确实提供了一个。非常感谢,先生!@berkyamanlar不客气。欢迎您。非常感谢,先生!非常感谢,先生!
int function(int *array2);
int answer;
answer[5]=function(array[5]);
#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;
}
1 2 3 4 5
2 3 4 5 6