小编nit*_*tzs的帖子

K&R样式函数定义问题

以下代码有效:

int main()
{
   void foo(int);
   foo(3);
   return 0;
}
void foo(a) int a;
{
   printf("In foo\n");
}
Run Code Online (Sandbox Code Playgroud)

但这个没有:

int main()
{
   void foo(float);
   foo(3.24);
   return 0;
}
void foo(a) float a;
{
   printf("In foo\n");
}
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

c function-declaration

14
推荐指数
1
解决办法
3962
查看次数

a和&a在C中作为函数参数传递的数组不同

为什么作为函数参数传递的数组的a和&a的值不同?b和&b对于函数体内定义的数组没有区别.代码如下:

void foo(int a[2])
{
   int b[2];    
   printf("%p %p\n", a, &a);
   printf("%p %p\n", b, &b);
}

int main()
{
   int a[2];
   foo(a);  
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

编辑:
所以,经过所有的讨论,我了解到以下情况:

main():

int a[2]; /* define an array. */
foo(a);   /* 'a' decays into a pointer to a[0] of type (int*). */
          /* since C is pass-by-value, this pointer is replicated and */
          /* a local copy of it is stored on the stack for use by foo(). */
Run Code Online (Sandbox Code Playgroud)

foo(): …

c arrays

7
推荐指数
1
解决办法
427
查看次数

数组索引循环变量在C,C++中重置为零

我已经声明了一个长度为N的数组(假设).现在,我使用循环为这个数组的元素赋值(循环变量用作数组的索引).代码如下:

int main()
{
  int arr[4], j;
  for(j=0; j<10; j++)
  {     
    printf("%d\n", j);
    arr[j] = 0;
    sleep(1);
    printf("%d\n\n", j);
  } 
return 0;
}
Run Code Online (Sandbox Code Playgroud)

我期望输出为0 1 2 .. 9.但实际发生的是,当赋值arr [N + 2] = 0(arr [6] = 0,在这种情况下)执行时,j被重置为0循环.这里到底发生了什么?我错过了什么吗?

c c++ arrays

3
推荐指数
1
解决办法
1754
查看次数

通过C中的指针传递可变大小的多维数组

我试图将可变大小的2D数组传递给函数来打印它.我知道当一个固定大小的数组时它是如何完成的.但是如何使用可变大小的数组做到这一点?这里有一些代码可以让你知道我想要做什么:

void print_grid(char (*g)[9], int size) // the array subscript (9 here) be variable
{
   int i, j;
   for (i=0; i<size; i++)
   {
      for (j=0; j<size; j++)            
         printf("%c ", g[i][j]);
      printf("\n");
   }
}
Run Code Online (Sandbox Code Playgroud)

我将使用以下代码调用此函数:

char a[3][3], b[9][9];
// assign a, b
print_grid(a, 3);
print_grid(b, 9);
Run Code Online (Sandbox Code Playgroud)

如果没有在print_grid()中分配任何动态内存,有没有办法做到这一点?

c multidimensional-array

1
推荐指数
1
解决办法
2702
查看次数