#include<iostream> using namespace std ; int main() { int * p = NULL , * t ; int i ; p = new int [10] ; if ( p == NULL ) { cout << "allocation faiure\n" ; return 1; } for ( i = 0 ; i < 10 ; i ++ ) p[i] = 100 + i ; cout << endl ; //情况1 for ( t = p ; t < p+10 ; t ++ ) cout << *t << " " ; //情况2 //for ( i = 0 ; i < 10 ; p ++,i++ ) // cout << *p << " " ; cout << endl ; delete [] p ; } 2)添加如下代码,调试程序并说明 情况1、情况2和情况3 程序功能的不同。 #include<iostream> using namespace std ; //情况1 void App( int * & pa , int len ) { pa = new int [len] ; if( pa == NULL ) { cout << "allocation faiure\n"; return ; } for( int i = 0; i<len; i++ ) pa[i] = i ; } //情况2 /*void App( int * pa , int len ) { pa = new int [len] ; if( pa == NULL ) { cout << "allocation faiure\n"; return ; } for( int i = 0; i<len; i++ ) pa[i] = i ; }*/ //情况3 /*void App( int ** pa , int len ) { *pa = new int [len] ; if( *pa == NULL ) { cout << "allocation faiure\n"; return ; } for( int i = 0; i<len; i++ ) (*pa)[i] = i ; }*/ int main() { int *ary = NULL, *t , i, n ; cout<<"n= "; cin>>n; //情况1/2 App( ary, n ); //情况3 // App( &ary, n ); for( i = 0; i<n; i++ ) {cout<<ary[i]<<" "; } delete []ary; }
时间: 2024-01-04 21:02:45 浏览: 86
#include <iostream>
情况1和情况2是在函数内部创建动态数组,并通过引用传递将数组指针返回给主函数。它们的区别在于情况1中使用了指向指针的引用,而情况2中只是传递了指针本身。在主函数中,可以像使用普通指针一样使用它们。
情况3中,使用了指向指针的指针来传递数组指针。在函数内部,需要使用解引用操作符(*)来访问指针指向的数组。在主函数中,需要使用二级指针来访问数组元素。
三种情况都是用来创建动态数组并返回数组指针的函数。它们的区别在于参数传递和指针使用的方式不同,但都能实现相同的功能。
阅读全文