c - 如何修改传递给函数的二维数组

标签 c arrays string 2d

我知道我们能够通过这样的函数来更改字符串

void    c(char *s)                                                                             
{                                                                                              
  int   i = 0;                                                                                 

  while (s[i])                                                                                 
    s[i++] = 's';                                                                              
}                



int     main()                                                                                 

    {                                                                                              
      char str[] = "hello";                                                                        

      c(str);                                                                                      
      printf("%s\n", str);                                                                         
      return (0);                                                                                  
    }  

在这种情况下,它将打印“sssss”。

但是如何像修改字符串一样修改二维数组呢? 我的意思是不返回数组。

void    c(char **s)                                                                          
{                                                                                            
  int   i = 0;                                                                               
  int   j = 0;                                                                               

  while (s[i])                                                                               
    {                                                                                        
      j = 0;                                                                                 
      while (s[i][j])                                                                        
        {                                                                                    
          s[i][j++] = 's';                                                                   
        }                                                                                    
      i++;                                                                                   
    }                                                                                        

}                                                                                            

int     main()                                                                               
{                                                                                            
  char tab[2][2];                                                                            
  tab[0][0] = 'a';                                                                           
  tab[0][1] = 'b';                                                                           
  tab[1][0] = 'c';                                                                           
  tab[1][1] = 'd';                                                                           
  c(tab);                                                                                    
  printf("%c%c\n%c%c", tab[0][0], tab[0][1], tab[1][0], tab[1][1]);                          
  return (0);                                                                                
}  

这是我们如何做到这一点的想法。

我希望我已经说得足够清楚了?

最佳答案

定义应包含长度。以下将是一个很好的阅读: http://www.firmcodes.com/pass-2d-array-parameter-c-2/

void c(char (*s)[length])

#include <stdio.h>
void    c(int len, char (*s)[len])
{
  int   i = 0;
  int   j = 0;

  while (i < len)
    {
      j = 0;
      while (s[i][j])
        {
          s[i][j++] = 's';
        }
      i++;
    }

}

int     main()
{
  char tab[2][2];
  tab[0][0] = 'a';
  tab[0][1] = 'b';
  tab[1][0] = 'c';
  tab[1][1] = 'd';
  c(2, tab);
  printf("%c%c\n%c%c", tab[0][0], tab[0][1], tab[1][0], tab[1][1]);
  return (0);
}

关于c - 如何修改传递给函数的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42319919/

相关文章:

java - 解析字符串以在其中添加元素

java - 如何检查字符串是否为数字

c - 如何从内核模块 (Linux) 中暂停任务?

c - XCode 4.3 - 从 XCode 4.2 升级后,perl 找不到 C 编译器

c - 是否可以将一种类型的位域转换为具有相同总位数的另一种类型的位域?

ruby - 将哈希树转换为具有深度键的哈希数组

c - 更新函数内的字符串数组

c# - 64位VMWare检测代码触发断点

python - 如何获得对带有噪声的图像进行二维高斯拟合的正确参数

php - 在给定索引的字符串中获取字符的最快方法(PHP)