C++ —— 数组/指针 做为函数参数传递

#include <vector>
#include <iostream>
using namespace std;
void fun1(int *a) {
	printf("1、int *a		:%x %d\n", &a, sizeof(a));
}
void fun2(int a[2]) {
	printf("2、int a[2]		:%x %d\n", &a, sizeof(a));
}
void fun3(int a[]) {
	printf("3、int a[]		:%x %d\n", &a, sizeof(a));
}
void fun4(int(&a)[2]){
	printf("4、int (&a)[2]		:%x %d\n", &a, sizeof(a));
}
void fun5(int * &a) {
	printf("5、int * &a		:%x %d\n", &a, sizeof(a));
}

int main() {
	int *M1 = new int[2]{ 1,2 };
	int M2[2]{ 1,2 };
	int *M3 = new int(3);
	printf("int *M1		:%x %d\n", &M1, sizeof(M1));
	printf("int M2[2]	:%x %d\n", &M2, sizeof(M2));
	printf("int *M3		:%x %d\n", &M3, sizeof(M3));
	cout << "-------------------------------------------M1" << endl;
	cout << "------------" << endl;
	fun1(M1);
	cout << "------------" << endl;
	fun2(M1);
	cout << "------------" << endl;
	fun3(M1);
	cout << "------------" << endl;
	//fun4(M1);//无法用 " int* " 类型初始化 " int (&)[2] "
	cout << "------------" << endl;
	fun5(M1);
	cout << "-------------------------------------------M2" << endl;
	fun1(M2);
	cout << "------------" << endl;
	fun2(M2);
	cout << "------------" << endl;
	fun3(M2);
	cout << "------------" << endl;
	fun4(M2);
	cout << "------------" << endl;
	//fun5(M2);//无法用 " int [2] "类型初始化 " int*& "
	cout << "-------------------------------------------M3" << endl;
	fun1(M3);
	cout << "------------" << endl;
	fun2(M3);
	cout << "------------" << endl;
	fun3(M3);
	cout << "------------" << endl;
	//fun4(M3);//无法用 " int * " 类型初始化 " int (&)[2] "
	cout << "------------" << endl;
	fun5(M3);
	cout << "-------------------------------------------" << endl;
}
int *M1         :53f98c 4
int M2[2]       :53f97c 8
int *M3         :53f970 4
------------------------------------------- int *M1 53f98c 4
------------
1int *a               :53f880 4
------------
2int a[2]             :53f880 4
------------
3int a[]              :53f880 4
------------
4、无法用 " int* " 类型初始化 " int (&)[2] "
------------
5int * &a             :53f98c 4 = int *M1 (引用)
------------------------------------------- int M2[2] 53f97c 8
1int *a               :53f880 4
------------
2int a[2]             :53f880 4
------------
3int a[]              :53f880 4
------------
4int (&a)[2]          :53f97c 8 = int M2[2] (引用,传递的是数组!!)
------------
5、无法用 " int [2] "类型初始化 " int*& "
------------------------------------------- int *M3 53f970 4
1int *a               :53f880 4
------------
2int a[2]             :53f880 4
------------
3int a[]              :53f880 4
------------
4、无法用 " int * " 类型初始化 " int (&)[2] "
------------
5int * &a             :53f970 4 = int *M3 (引用)
-------------------------------------------

后续再逐渐补充

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值