c语言中用结构体的实例当做函数的参数是什么形式传入的

#include <stdio.h> #include <malloc.h> typedef struct Node { int i, j, k; }Node; void SizeOfStruct(Node node) { printf("%d\n", sizeof(node)); } void SizeOfArray(int *array) { printf("%d\n", sizeof(array)); } void main() { Node node; int array[8]; SizeOfArray(array); SizeOfStruct(node); } 上面例子的结果是4, 12; 我想这不是以指针形式传入的吧, 那是以什么形式传入的呢。

第1个回答  2020-02-11
参数的传入分为两种形式:值传递和地址传递。如果把实例本身作为参数传到函数里面去,那么在函数里面实际上是另外产生一个临时的实例,其值和函数外部的那个实例一样,当然在函数内部对其做的一些改动是不会影响到外边的实例的,因为就不是同一个东西。当然如果在函数里不是想去改变什么而只是单纯的计算一些东西还是没问题的,不过在内存中的地址之类的当然是不一样的。。。传指针也就是把地址传进去,那么在函数里对该地址中的数据进行操作,当然就是在外部实例本身上面进行修改了
相似回答