欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

c/c++ 多维数组和指针

程序员文章站 2023-11-18 08:13:52
c/c++ 多维数组和指针 知识点 1,初始化多维数组,对应代码里的test1 2,遍历多维数组,除了最内层循环外,其他所有层都必须是引用类型,对应代码里的test2 3,指针和多维数组 ,对应代码里的test3 c++ include using namespace std; int main() ......

c/c++ 多维数组和指针

知识点

1,初始化多维数组,对应代码里的test1

2,遍历多维数组,除了最内层循环外,其他所有层都必须是引用类型,对应代码里的test2

3,指针和多维数组 ,对应代码里的test3

#include <iostream>

using namespace std;

int main(){
  //test1 初始化多维数组                                                        
  /*                                                                            
  int ia[3][4] = {                                                              
    {0,1,2,3},                                                                  
    {4,5,6,7},                                                                  
    {8,9,10,11}                                                                 
  };                                                                            
  //ia2和ia完全相同                                                             
  int ia2[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};                                  
  //只初始化每行的首元素,其他元素为默认值                                       
  int ia3[3][4] = {{1},{4},{8}};                                                
  int ia4[2][3][4] = {1};                                                       
  //用ia4的首元素为ia最后一行最后一列的最后一个元素赋值                         
  ia[2][3] = ia4[0][0][0];                                                      
  //把row绑定到ia的第二行上                                                     
  int (&row)[4] = ia[2];                                                        
  for(auto s : row){                                                            
    cout << s << ",";                                                           
  }                                                                             
  cout << endl;                                                                 
  */

  //test2 遍历多维数组,除了最内层循环外,其他所有层都必须是引用类型             
  /*                                                                           
  constexpr size_t rowcnt = 3,colcnt = 4;                                       
  int ia[3][4] = {                                                              
    {0,1,2,3},                                                                  
    {4,5,6,7},                                                                  
    {8,9,10,11}                                                                 
  };                                                                            
  for(size_t i = 0; i < rowcnt; ++i){                                           
    for(size_t j = 0; j < colcnt; ++j){                                         
      cout << ia[i][j] << ",";                                                  
    }                                                                           
    cout << endl;                                                               
  }                                                                             
  //除了最内层循环外,其他所有层都必须是引用类型                                
  for(auto &row : ia){                                                          
    for(auto &col : row){                                                       
      cout << col << ",";                                                       
    }                                                                           
    cout << endl;                                                               
  }                                                                             
  */

  //test3 指针和多维数组                                                        
  int ia[3][4] = {
    {0,1,2,3},
    {4,5,6,7},
    {8,9,10,11}
  };
  //普通遍历                                                                    
  for(auto p = ia; p != ia + 3; ++p){
    for(auto q = *p; q != *p + 4; ++q){
      cout << *q << ",";
    }
    cout << endl;
  }
  //利用库函数begin和end                                                        
  for(auto p = std::begin(ia); p != std::end(ia); ++p){
    for(auto q = std::begin(*p); q != std::end(*p); ++q){
      cout << *q << ",";
    }
    cout << endl;
  }
  //利用别名                                                                    
  using iar = int[4];
  for(iar* p = ia; p != ia + 3; ++p){
    for(int* q = *p; q != *p + 4;++q){
      cout << *q << ",";
    }
    cout << endl;
  }
}

c/c++ 学习互助qq群:877684258

本人微信:xiaoshitou5854