いくつかの散乱や断片的な知識_int **ポインタとCでの問題の二次元配列++

ディレクトリ

1、2次元配列の問題とint型のポインタ**

1、2次元配列の問題とint型のポインタ**

01)方法の2次元配列を定義します。

INT行列[ROWS] [COLUMNSは];   // 二次元アレイ、前記定数行と列を定義します

02)機能は、次のステートメントを追加しました:

無効 printMatrixを(int型 **番号、int型の列は、int型の列が)。

あなたは以下の方法を使用して直接呼び出す場合03)、それは間違っています。

; printMatrix(マトリックス、行、列)   // そう間違ってダイレクトコール

そのため行列がint(*)[COLUMNS]タイプですが、関数はint型** printMatrixタイプ必要とされ、明らかに一致していないどちらもが、。

int型**話すから、あなたがそれを行う方法に行列の必要性を表現するためにそれを使用したい場合は、ポインタは、その後、整数ポインターを入力するのですか?そのすべての要素が行列の行を表す場合、マトリックスを表わすために使用することができる場合には、要素へのポインタであるからです。次のようにコードは次のとおりです。

1  // 生成矩阵   
2  INT(** generateMatrix INT行、INT 列)  
 3  {  
 4つの     INT **番号= 新しい INT * [行]。  
5      のためのint型 I = 0 ; iが行を<Iは++ ){  
 6つの          番号[I] = 新しい INT [列]。  
7          のためのINT J = 0 ; J <カラム; J ++ 8                  数[I] [J] = iの列+ * jは、  
9      }  
 10     返しの数字を。   
11 }
int型**行列で表現

全体としてint型*。これは、各要素は配列へのポインタを表し、サイズ行のアレイを作成表します。メモリレイアウトは次のよう:

 

 

ここで番号は、ポインタへのポインタは、キーマトリックスと数字を表すために使用することができるされている新たなキーワードに割り当てられたメモリが連続的であるので、その番号[i]がポインタ変数ので、アドレス番号のアドレスから計算することができるということですメモリ領域の4バイト(32ビットマシン)を占めています。ポインタに上記の方法を使用してメモリを割り当てていない場合は、数字は本当にただのポインタ

04)printMatrix(マトリックス、行、列)テストコードの適切な使用:

1の#include <STDLIB.H>  
 2の#include <stdio.hの>  
 3の#include <iostreamの>  
 4  // 打印矩阵   
5  ボイド printMatrix(INT **番号、INT行、INT 列){  
 6      のためのint型 I = 0 ;私は、行を<; I ++は7      {  
 8              ためINT J = 0 ; J <カラム; J ++ 9つ                      のstd :: COUT <<番号[I] [J] << "  " 10          のstd :: coutの<<std ::てendl;  
11      }  
 12  }  
 13    
14  // 生成矩阵   
15  INT ** generateMatrix(INT行、INT 列)  
 16  {  
 17      INT **番号= 新しい INT * [行]。  
18      のためにint型 I = 0 ; iが行を<; Iは++ ){  
 19の          番号[I] = 新しい INT [列]。  
20          のためのint型 J = 0 ; J <列J ++ 21                 番号[I] [J] = iの列+ * jは、  
22      }  
 23の     リターン番号。   
24  }  
 25  INT メイン(){  
 26の     INT **番号= generateMatrix(45 )。  
27      printMatrix(数字、45 )。  
28      // 释放内存   
29      のためにint型 i = 0 ; iは< 4 ; iは++ 30              を削除[]番号[I]を、  
31の     削除数字。  
32      リターン 0 ;
コードの表示

 参考ブログ:

https://www.cnblogs.com/lpxblog/tag/C%2B%2B%E9%9D%A2%E8%AF%95%E9%A2%98/

おすすめ

転載: www.cnblogs.com/YiYA-blog/p/11456085.html