如题所述
Cè¯è¨ç¼ç¨çè¿ç¨ä¸ï¼ä¸å¯é¿å
çä¼ç¢°å°äºç»´æäºç»´ä»¥ä¸çæ°ç»ä½ä¸ºå½æ°çå½¢åçæ
åµï¼å¨ä»¥åçç¼ç¨è¿ç¨ä¸ï¼ä¹ æ¯äºå¨ææ°ç»çåºç¨ï¼å¾æ¯ä½¿ç¨ç´æ¥å®ä¹é«ç»´æ°ç»ãæè¿å¨ç¼ç¨çè¿ç¨ä¸å°±ç¢°å°äºè¿ä¸ªé®é¢ï¼æå¦ä¸çæµè¯ç¨åºï¼
voidtest(double **x,int Row,int Col);
voidtest(double **x)
{
for(int i=0;i<Row;i++)
for(int k=0;k<Col;k++)
x[i][k] += 100.0;
}
intmain(int argc, char *argv[])
{
/*
double **x;
x = new double *[3];
for(int i=0;i<3;i++)
x[i] = new double[3];
*/
double x[3][3];
for(int i=0;i<3;i++)
for(int k=0;k<3;k++)
x[i][k] = i*k;
test(x,3,3);
for(int i=0;i<3;i++)
for(int k=0;k<3;k++)
printf("x[%d][%d]= %e\n",i,k,x[i][k]);
getch();
return 0;
}
ç¼è¯æ¶æ示Cannot convert 'double [*][3]' to double **'ã
å°è°ç¨æ¹å¼å¼ºå¶è¿è¡ç±»å转æ¢ï¼test((double **)x)ï¼ç¼è¯éè¿ï¼è¿è¡åºéï¼æ示éæ³è¶çã
æ®ä¼ ï¼å 为æ ä¸åé çæ°ç»åå ä¸åé çæ°ç»å¨å åæåä¸å¯è½ä¸ç¸åï¼ç´æ¥å®ä¹çæ°ç»æ¯åå¨å¨ç¨åºçå æ åºï¼æ°æ®å ç¨è¿ç»çåºé´ï¼èå¨æç³è¯·çæ°ç»æ¯å¨ç³»ç»çè¿å ä¸ï¼far heapï¼ï¼é¤æåä¸ç»´çå ç´ æ¯è¿ç»åæ¾çå¤ï¼å ¶ä»ç»´ä¸çå ç´ æå¯è½ä¸æ¯å¨ä¸åè¿ç»çå ååºåéã
//æ ä¸ï¼
int ia[2][2] = {2,3,4,5}; //4个å ç´ æ¯è¿ç»æåçå å段
//å ä¸ï¼
int **p = new int*[2]; //åªææ¯è¡å æ¯è¿ç»æåï¼åè¡å¹¶ä¸ä¸å®è¿ç»æå
for ( int i = 0; i < 2; i++ )
{
p[i] = new int[2];
}
for ( int i = 0; i < 2; i++ )
{
for ( int j = 0; j < 2; j++ )
{
p[i][j] = ia[i][j];
}
}
æ以对æ ä¸çæ°ç»ç¨int **pæåé¦å°åï¼å 为int **pä¸æ¬¡è§£å¼ç¨ä¸ºå°åæéï¼èéå ä¸çæåæ°ç»çæéï¼æ以äºæ¬¡è§£å¼ç¨ä¼åºéã
å¦ææ¾ä¸ä¸ªéç¨æ¹ç¨åªè½ç¨ï¼
void f( int *p, int row, int col ) //ç»åºæ°ç»çè¡åå,对å ä¸çæ°ç»ä¸åé
{
for ( int i = 0; i < row; i++)
{
for ( int j = 0; j < col; j++ )
{
cout < < p[i * row + j] < < " ";
}
cout < < endl;
}
}
int main(){
//.........
int ia[2][2] = {2,3,4,5};
f( (int*)ia, 2, 2 );
}
éç¨ä¸é¢çéç¨åæ³è¿æ¯æ¯è¾éº»ç¦ï¼è¿æ å½¢ä¸å¯¹ç¼ç¨å¢å äºé¾åº¦ï¼ä¸ºäºé¿å è¿ä¸ªéº»ç¦å¯ä»¥éç¨å¨ææ°ç»çå½¢å¼ï¼å°åæ¥éç¨ç´æ¥å®ä¹çæ°ç»å ¨é¨æ¢æå¨ææ°ç»ï¼ç±»ä¼¼å¼å¤´ä¾åä¸è¢«æ³¨éæçé£é¨å代ç ï¼å½ç¶è¿æ ·ä¹æåç»ç麻ç¦ï¼å¨ææ°ç»ççå½å¨æå®æåå¿ é¡»éæ¾å å空é´ï¼è¿ä¹æç¹ç½å¦ï¼ä½æ¯æ¯ç«å¯ä»¥ç´æ¥ä½¿ç¨æ°ç»çå½¢å¼ï¼æ¯ä¸é¢çéç¨æ¹å¼è¿æ¯è¦ç®åä¸ç¹ã
å¦ææ§æè¦ä½¿ç¨ç´æ¥å®ä¹çæ°ç»è¯¥æä¹åå¢ï¼æå¦ä¸å ç§æ¹æ³ï¼
æ¹æ³ä¸ï¼
voidtest(double (*x)[3], int Row, int Col);
è°ç¨æ¹å¼ï¼test(x,Row,Col);
è°ç¨ç¨æ¹å¼ test(x,Row,Col);
æ¹æ³äºï¼
voidtest(double x[][3], int Row,int Col);
è°ç¨æ¹å¼ test(x,Row,Col);
对äºå¤ç»´æ°ç»ä½ä¸ºåæ°ï¼é¤ç¬¬ä¸ç»´ä¹å¤çå ¶å®ç»´å¿ é¡»æå®ç»´æ°ï¼å¦åæ¯è¯å®ç¼è¯ä¸è¿å»çã
ä»ä¸é¢ç对ç´æ¥å®ä¹çæ°ç»çå¼ç¨æ åµçï¼ç´æ¥å®ä¹çæ°ç»ç使ç¨æ¯è¾éº»ç¦ï¼ä¸æ¦ç´æ¥å®ä¹æ°ç»çç»´æ°åçåæ¢ï¼å½æ°çå®ä¹å¿ é¡»ç¸åºçä¿®æ¹ï¼å¦åç¨åºå°±ä¼åºéï¼è¿ä¹å¢å äºç¨åºè¿ä¸æ¥å¼åç麻ç¦ï¼ä¸ºäºä¸å³æ°¸é¸ç解å³è¿ä¸ªé®é¢ï¼å»ºè®®è¿æ¯ä½¿ç¨å¨ææ°ç»çæ¹æ³ï¼è½ç¶éè¦æå·¥éæ¾å åï¼ä½æ¯é¤å´äºåç»ç麻ç¦ã
voidtest(double **x,int Row,int Col);
voidtest(double **x)
{
for(int i=0;i<Row;i++)
for(int k=0;k<Col;k++)
x[i][k] += 100.0;
}
intmain(int argc, char *argv[])
{
/*
double **x;
x = new double *[3];
for(int i=0;i<3;i++)
x[i] = new double[3];
*/
double x[3][3];
for(int i=0;i<3;i++)
for(int k=0;k<3;k++)
x[i][k] = i*k;
test(x,3,3);
for(int i=0;i<3;i++)
for(int k=0;k<3;k++)
printf("x[%d][%d]= %e\n",i,k,x[i][k]);
getch();
return 0;
}
ç¼è¯æ¶æ示Cannot convert 'double [*][3]' to double **'ã
å°è°ç¨æ¹å¼å¼ºå¶è¿è¡ç±»å转æ¢ï¼test((double **)x)ï¼ç¼è¯éè¿ï¼è¿è¡åºéï¼æ示éæ³è¶çã
æ®ä¼ ï¼å 为æ ä¸åé çæ°ç»åå ä¸åé çæ°ç»å¨å åæåä¸å¯è½ä¸ç¸åï¼ç´æ¥å®ä¹çæ°ç»æ¯åå¨å¨ç¨åºçå æ åºï¼æ°æ®å ç¨è¿ç»çåºé´ï¼èå¨æç³è¯·çæ°ç»æ¯å¨ç³»ç»çè¿å ä¸ï¼far heapï¼ï¼é¤æåä¸ç»´çå ç´ æ¯è¿ç»åæ¾çå¤ï¼å ¶ä»ç»´ä¸çå ç´ æå¯è½ä¸æ¯å¨ä¸åè¿ç»çå ååºåéã
//æ ä¸ï¼
int ia[2][2] = {2,3,4,5}; //4个å ç´ æ¯è¿ç»æåçå å段
//å ä¸ï¼
int **p = new int*[2]; //åªææ¯è¡å æ¯è¿ç»æåï¼åè¡å¹¶ä¸ä¸å®è¿ç»æå
for ( int i = 0; i < 2; i++ )
{
p[i] = new int[2];
}
for ( int i = 0; i < 2; i++ )
{
for ( int j = 0; j < 2; j++ )
{
p[i][j] = ia[i][j];
}
}
æ以对æ ä¸çæ°ç»ç¨int **pæåé¦å°åï¼å 为int **pä¸æ¬¡è§£å¼ç¨ä¸ºå°åæéï¼èéå ä¸çæåæ°ç»çæéï¼æ以äºæ¬¡è§£å¼ç¨ä¼åºéã
å¦ææ¾ä¸ä¸ªéç¨æ¹ç¨åªè½ç¨ï¼
void f( int *p, int row, int col ) //ç»åºæ°ç»çè¡åå,对å ä¸çæ°ç»ä¸åé
{
for ( int i = 0; i < row; i++)
{
for ( int j = 0; j < col; j++ )
{
cout < < p[i * row + j] < < " ";
}
cout < < endl;
}
}
int main(){
//.........
int ia[2][2] = {2,3,4,5};
f( (int*)ia, 2, 2 );
}
éç¨ä¸é¢çéç¨åæ³è¿æ¯æ¯è¾éº»ç¦ï¼è¿æ å½¢ä¸å¯¹ç¼ç¨å¢å äºé¾åº¦ï¼ä¸ºäºé¿å è¿ä¸ªéº»ç¦å¯ä»¥éç¨å¨ææ°ç»çå½¢å¼ï¼å°åæ¥éç¨ç´æ¥å®ä¹çæ°ç»å ¨é¨æ¢æå¨ææ°ç»ï¼ç±»ä¼¼å¼å¤´ä¾åä¸è¢«æ³¨éæçé£é¨å代ç ï¼å½ç¶è¿æ ·ä¹æåç»ç麻ç¦ï¼å¨ææ°ç»ççå½å¨æå®æåå¿ é¡»éæ¾å å空é´ï¼è¿ä¹æç¹ç½å¦ï¼ä½æ¯æ¯ç«å¯ä»¥ç´æ¥ä½¿ç¨æ°ç»çå½¢å¼ï¼æ¯ä¸é¢çéç¨æ¹å¼è¿æ¯è¦ç®åä¸ç¹ã
å¦ææ§æè¦ä½¿ç¨ç´æ¥å®ä¹çæ°ç»è¯¥æä¹åå¢ï¼æå¦ä¸å ç§æ¹æ³ï¼
æ¹æ³ä¸ï¼
voidtest(double (*x)[3], int Row, int Col);
è°ç¨æ¹å¼ï¼test(x,Row,Col);
è°ç¨ç¨æ¹å¼ test(x,Row,Col);
æ¹æ³äºï¼
voidtest(double x[][3], int Row,int Col);
è°ç¨æ¹å¼ test(x,Row,Col);
对äºå¤ç»´æ°ç»ä½ä¸ºåæ°ï¼é¤ç¬¬ä¸ç»´ä¹å¤çå ¶å®ç»´å¿ é¡»æå®ç»´æ°ï¼å¦åæ¯è¯å®ç¼è¯ä¸è¿å»çã
ä»ä¸é¢ç对ç´æ¥å®ä¹çæ°ç»çå¼ç¨æ åµçï¼ç´æ¥å®ä¹çæ°ç»ç使ç¨æ¯è¾éº»ç¦ï¼ä¸æ¦ç´æ¥å®ä¹æ°ç»çç»´æ°åçåæ¢ï¼å½æ°çå®ä¹å¿ é¡»ç¸åºçä¿®æ¹ï¼å¦åç¨åºå°±ä¼åºéï¼è¿ä¹å¢å äºç¨åºè¿ä¸æ¥å¼åç麻ç¦ï¼ä¸ºäºä¸å³æ°¸é¸ç解å³è¿ä¸ªé®é¢ï¼å»ºè®®è¿æ¯ä½¿ç¨å¨ææ°ç»çæ¹æ³ï¼è½ç¶éè¦æå·¥éæ¾å åï¼ä½æ¯é¤å´äºåç»ç麻ç¦ã
温馨提示:答案为网友推荐,仅供参考