下面例子的结果是4, 12; 我想这不是以指针形式传入的吧, 那是以什么形式传入的?

#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);
}

肥皂起泡泡
浏览 138回答 2
2回答

叮当猫咪

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

吃鸡游戏

1、仍然是以形参传入。相当于重新拷贝了一个结构体传入函数进行操作。2、参数的传入分为两种形式:值传递和地址传递。如果把实例本身作为参数传到函数里面去,那么在函数里面实际上是另外产生一个临时的实例,其值和函数外部的那个实例一样,当然在函数内部对其做的一些改动是不会影响到外边的实例的,因为就不是同一个东西。当然如果在函数里不是想去改变什么而只是单纯的计算一些东西还是没问题的,不过在内存中的地址之类的当然是不一样的。传指针也就是把地址传进去,那么在函数里对该地址中的数据进行操作,当然就是在外部实例本身上面进行修改了。
打开App,查看更多内容
随时随地看视频慕课网APP