c 数组传参

 

#include<stdio.h>

//接收的是num数组的首地址
void fun1(int *num){
    num[0]=123;
    printf("sizeof(num)=%lu\n",sizeof(num));
    printf("num = %p,num+1 = %p \n",num,num+1);
}

//int num[] 或 int num[400]
void fun2(int num[400]){ num[0]=123; // printf("sizeof(num)=%lu\n",sizeof(num)); printf("num = %p,num+1 = %p \n",num,num+1); } int main(){ int arr[400]={0}; printf("sizeof(arr)=%lu\n",sizeof(arr)); printf("arr=%p,arr+1=%p\n",arr,arr+1); printf("arr[0] = %p\n",&arr[0]); fun2(arr); return 0; }

 

sizeof(arr)=1600
arr=0x7ffd549cc0c0,arr+1=0x7ffd549cc0c4
arr[0] = 0x7ffd549cc0c0
num = 0x7ffd549cc0c0,num+1 = 0x7ffd549cc0c4 

 

sizeof(arr)=1600
arr=0x7ffc09aa6e90,arr+1=0x7ffc09aa6e94
arr[0] = 0x7ffc09aa6e90
sizeof(num)=8
num = 0x7ffc09aa6e90,num+1 = 0x7ffc09aa6e94 

 

int 占4字节

char 占1字节

double 占8字节

 

指针变量大小

32位操作系统 4字节

64位操作系统 8字节

 

 

int arr[400][20]={0};

 

void func(int num[][20])

void func(int (*num)[20])

 

int **p=nulll

p,p+1  相差8字节(*p=8字节)

posted @ 2022-11-13 16:40  qingjiawen  阅读(52)  评论(0编辑  收藏  举报