为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
肥皂起泡泡 2023-04-19 19:15:03
#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);}
查看完整描述

2 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

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

查看完整回答
反对 回复 2023-04-23
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

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

查看完整回答
反对 回复 2023-04-23
  • 2 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信