c/c++ 數組 數組的引用,指針數組的引用


c/c++ 數組

知識點

1,數組的聲明和初始化,對應代碼里的test1和test2

2,char數組,對應代碼里的test3

3,數組不可以拷貝和復制,對應代碼里的test4

4,指針數組, 數組的指針, 數組的引用,指針數組的引用,對應代碼里的test5

5,數組的范圍for用法,對應代碼里的test6

6,用size_t作為下標的類型,對應代碼里的test6

#include <iostream>
#include <string>
#include <cstddef>

using namespace std;

int main(){
  //test1 聲明時必須指定數組的大小                                              
  /*                                                                            
  unsigned cnt = 42;                                                            
  constexpr unsigned sz = 42;                                                   
  int arr[10];                                                                  
  int *parr[sz];                                                                
  string bad[cnt];                                                              
  bad[23] = "aaa";                                                              
  cout << bad[23] << endl;                                                      
  */

  //test2 初始化                                                                
  /*                                                                            
  const unsigned sz = 3;                                                        
  int ia1[sz] = {1,2,3};//含有3個元素的數組,元素值:1,2,3                      
  int a2[] = {1,2,3};//含有3個元素的數組,元素值:1,2,3                         
  int a3[5] = {1,2,3};//含有5個元素的數組,元素值:1,2,3,0,0                    
  cout << a3[3] << a3[4] << endl;                                               
  string a4[3] = {"ni", "go"};//含有3個元素的數組,元素值:"ni","go",""         
  cout << a4[2] << endl;                                                        
  //int a5[2] = {1,2,3};//錯誤                                                  
  */

  //test3 char數組                                                              
  /*                                                                            
  char a1[] = {'a','b','c'};//列表初始化,沒有尾部\0                            
  cout << a1 << endl;//因為沒有尾部的\0,所以會一直打印到\0為止                 
  char a2[] = {'a','b','c', '\0'};//列表初始化,有尾部\0                        
  cout << a2 << endl;                                                           
  char a3[] = "abc";//自動添加尾部的\0                                          
  cout << a3 << endl;                                                           
  //char a4[3] = "abc";//錯誤,指定了大小為3,無法在c后面加\0                   
  */

  //test4 數組拷貝和賦值                                                        
  /*                                                                            
  int a[] = {1,2,3};                                                            
  //int a1[] = a;//不能拷貝數組                                                 
  int a2[] = {1,1,1};                                                           
  //a2 = a;//不能用數組給數組賦值                                               
  */

  //test5 指針數組, 數組的指針, 數組的引用,指針數組的引用                    
  /*                                                                            
  //指針數組                                                                    
  int* pt[10];//ptr指向含有10個整型指針的數組                                   
  //數組的指針                                                                  
  int (*parr)[10];//parr指向一個含有10個整數的數組,應用於二維數組               
  int br[2][10];                                                                
  parr = br;                                                                    
  if(parr + 1 == &br[1]){                                                       
    cout << "==" << endl;                                                       
    parr[0][0] = 10;                                                            
    cout << br[0][0] << endl;                                                   
  }                                                                             
  int arr[10];                                                                  
  //數組的引用                                                                  
  int (&af)[2][10] = br;                                                        
  af[0][1] = 123;                                                               
  cout << br[0][1] << endl;                                                     
  int (&arrRef)[10] = arr;                                                      
  arrRef[0] = 100;                                                              
  arrRef[1] = 10;                                                               
  cout << arrRef[0] << "," << arrRef[1] << endl;                                
  //指針數組的引用                                                              
  int* (&ar)[10] = pt;                                                          
  int a = 5;                                                                    
  ar[0] = &a;                                                                   
  *ar[0] = 500;                                                                 
  cout << a << endl;                                                            
  */

  //test6 數組的范圍for用法                                                     
  int ar[5] = {};
  for(auto &s : ar){
    s = s + 1;
  }
  //用size_t作為下標的類型,包括在cstddef頭文件里                               
  size_t idx = 1;
  ar[idx] = 100;
  for(auto s : ar){
    cout << s << ",";
  }
  cout << endl;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM