C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。
在C++中,类是支持数据封装的工具,对象则是数据封装的实现。C++通过建立用户定义类支持数据封装和数据隐藏。
在面向对象的程序设计中,将数据和对该数据进行合法 *** 作的函数封装在一起作为一个类的定义。
当数组作为函数参数传递时,只有指向数组第一个元素的指针传递给函数。数组的大小不会随指针一起传递。这意味着该函数无法知道原始数组的大小,只能访问指针边界内的元素。
如果要将整个数组传递给函数并让该函数对整个数组进行 *** 作,则可以将数组的大小作为附加参数传递。例如:
void modifyArray(int arr[], int size) {
int i;
for (i = 0; i < size; i++) {
arr[i] = 2;
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
modifyArray(arr, size);
int i;
for (i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
在此示例中,函数 'modifyArray接受两个参数:整数数组和数组大小。main 函数通过将整个数组的大小除以数组中一个元素的大小来计算数组的大小。然后将数组的大小作为参数传递给modifyArray函数,允许它在整个阵列上运行。
首先来个基本函数参数的传递
sub hello { print "Hello @_" }hello ("World!", "I am Robot" ) ; # 打印出 Hello World! I am Robot
这里值得留意的就是 @_ 就是装载所有传入的参数的数组 ( 看好了, 这其实是数组啊!! )
所以, 将上面的改一下, 就可以:
sub hello { print "Hello $_[0]" }hello ("World!", "I am Robot" ) ; # 打印出 Hello World!
这次, 我不打印 @_, 而只取第一个元素, 所以会写成 $_[0]
又因为传入时都是数组的关系, 所以 :
sub printArray {my @x = $_[0];
my @y = $_[1];
print "X: @x$/";
print "Y: @y$/";
}
@x = ( 15 );
@y = ( 'a''f') ;
printArray ( @x, @y ) ; # 输出竟然是 1 2!!
这样是行不通的, 因为对 @_ 来说, 传入的参数其实只是 ( 15, 'a''f' ), 它们都堆在一起了
要做到可以区分出来数组做参数, 我们要用"引用"了!
sub printArray {my @x = @{$_[0]}; # 这个叫 de-reference, 反引用
my @y = @{$_[1]};
print "X: @x$/";
print "Y: @y$/";
}
@x = ( 15 );
@y = ( 'a''f') ;
printArray ( \@x, \@y ) ; # 这个叫 reference, 将数组变成引用传入
# 这次的输出是
# X: 1 2 3 4 5
# Y: a b c d e f
所谓引用, 其实就相当於 c 的 pointer (姑且这麼理解吧!) 实际上传入的就是一个记忆体地址而已, 当反引用时, perl 就会知道这是一个数组, 於是就可以赋值回等号左边的 @x 和 @y 了
C语言中
指针做函数参数传递二维数组有两种基本方法:
1、传递“数组指针”
#include <stdioh>
void output( int (pa)[3], int n )//这个函数只能输出n行3列的二维数组
{
int i,j;
for( i=0;i<n;i++ ){
for( j=0;j<3;j++ )
printf("%d ", pa[i][j] );
printf("\n");
}
}
void main()
{
int a[2][3]={
{1,2,3},
{4,5,6}
};
output(a,2);
}
2、传递“指针数组”
先将二维数组的行指针存储到一个指针数组中,再将指针数组传递到子函数中去。
#include <stdioh>
void output( int pa[], int row,int col ) //这个函数更通用,但调用前,要做好准备工作。
{
int i,j;
for( i=0;i<row;i++ ){
for( j=0;j<col;j++ )
printf("%d ", pa[i][j] );
printf("\n");
}
}
void main()
{
int a[2][3]={
{1,2,3},
{4,5,6}
};
int i;
int pa[2];
for( i=0;i<2;i++ )
pa[i]=a[i];
output(pa, 2, 3);
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)