在C中更改数组值的符号

在C中更改数组值的符号,c,multidimensional-array,parameters,function-declaration,variable-length-array,C,Multidimensional Array,Parameters,Function Declaration,Variable Length Array,我需要编写一个函数来获取数组中的元素并更改符号(例如3-->-3或-3-->3)。我想用这个数组(inta[2][3]={{55,-44,},{1,-4},{6,11};)代替(inta[]={5,6,-4};) 我该怎么办 #include <stdio.h> void change_sign(int* beta) { for (int i = 0; i < 3; i++) { beta[i] = -beta[i]; } } int main(vo

我需要编写一个函数来获取数组中的元素并更改符号(例如3-->-3或-3-->3)。我想用这个数组(inta[2][3]={{55,-44,},{1,-4},{6,11};)代替(inta[]={5,6,-4};) 我该怎么办

#include <stdio.h>

void change_sign(int* beta)
{
   for (int i = 0; i < 3; i++) {
      beta[i] = -beta[i];
   }
}

int main(void)
{
   int a[] = { 5, 6, -4};

   for (int i = 0; i < 3; i++) {
      printf("%d ", a[i]);
   }
   printf("\n");
   change_sign(a);
   for (int i = 0; i < 3; i++) {
      printf("%d ", a[i]);
   }
   return 0;
}
#包括
无效更改符号(int*beta)
{
对于(int i=0;i<3;i++){
β[i]=-β[i];
}
}
内部主(空)
{
int a[]={5,6,-4};
对于(int i=0;i<3;i++){
printf(“%d”,a[i]);
}
printf(“\n”);
变更标志(a);
对于(int i=0;i<3;i++){
printf(“%d”,a[i]);
}
返回0;
}

对于初学者来说,您的意思似乎是这个数组

int a[3][2] = { { 55,-44,},{1, -4},{6,11} };
而不是这个

int a[2][3] = { { 55,-44,},{1, -4},{6,11} };
在任何情况下,如果编译器支持可变长度数组,那么函数可以如下所示

void change_sign( size_t m, size_t n, int a[][n] )
{
    for ( size_t i = 0; i < m; i++ )
    {
        for ( size_t j = 0; j < n; j++ )
        {
            a[i][j] = -a[i][j];
        }
    }
}
#define N  2

void change_sign( int a[][N], size_t m )
{
    for ( size_t i = 0; i < m; i++ )
    {
        for ( size_t j = 0; j < N; j++ )
        {
            a[i][j] = -a[i][j];
        }
    }
}
否则,函数可能看起来像

void change_sign( size_t m, size_t n, int a[][n] )
{
    for ( size_t i = 0; i < m; i++ )
    {
        for ( size_t j = 0; j < n; j++ )
        {
            a[i][j] = -a[i][j];
        }
    }
}
#define N  2

void change_sign( int a[][N], size_t m )
{
    for ( size_t i = 0; i < m; i++ )
    {
        for ( size_t j = 0; j < N; j++ )
        {
            a[i][j] = -a[i][j];
        }
    }
}

乘以-1。e、 g
beta[i]=-1*beta[i]将函数更改为
无效更改符号(int beta[][5])
并使用两个嵌套循环。那么,您的代码是否有效?或者您得到了什么结果?由于更改了问题,数组初始化与数组定义不匹配。很抱歉。这是个错误。谢谢大家。特别是多亏了风向标,我解决了这个问题。非常感谢你。