一维数组传参
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//一维数组传参
void test(int arr[]) { }//ok
void test(int arr[10]) { }//ok
void test(int* arr) { }//ok
void test2(int* arr[20]) { }//ok
void test2(int* arr) { }//ok
void test2(int** arr) { }//ok
int main() {
int arr[10] = { 0 };
int arr2[20] = { 0 };
test(arr);
test2(arr2);
return 0;
}
二维数组传参
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//二维数组传参
void test(int arr[3][5]){}//ok
void test(int arr[][5]){}//ok
void test(int arr[3][]){}//error
void test(int arr[][]){}//error
void test(int* arr) {}//error
void test(int** arr) {}//error
void test(int(*arr)[5]) {}//ok
int main() {
int arr[3][5] = { 0 };
test(arr);
return 0;
}
函数能接收什么参数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//函数能接收什么参数
void test1(int* p) {
}
void test2(char* p) {
}
int main() {
int a = 10;
int* p1 = &a;
test1(&a);//ok
test1(p1);//ok
char ch = 'w';
char* pc = &ch;
test2(&ch);//ok
test2(pc);//ok
return 0;
}
二级指针传参
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//二级指针传参
void test(int** p) {
}
int main() {
int* ptr;
int** pp = &ptr;
int* arr[10];
test(&ptr);//ok
test(pp);//ok
test(arr);//ok -指针数组也可以
return 0;
}