这道题目考得是指针 我就没什么好说的了 另外 第一个printf中一个%d对应了a和b两个值 但不复制变量.则改变时直接改变0x00000001中的数字.<3>void f(int &n){n=10;}int n=5;f(n);同上.只是增加了可读性.传入的是变量且不复制地址.直接调用原地址里的数.和<2>一样
|||
首先你的程序是有问题的 包子 的答案让我最认可 而且都是正确的 另一种是传引用
|||
大家都给出了答案 一种是传指针 有两种方式 就不存在这个问题了
|||
要改变实参的值 要改变实参只需要在主函数中把传下去的两个量改了就行 指针是指向内存地址 而不是地址中的值 但如果指针的值改变了 那么对应的内存地址的值也要改变 但指针指的内存地址不变啊 (不懂再问我啊 )
比如0x00000001.这样会复制地址 所以可以使用f(5).后面两个就不可以.<2>void f(int *n){*n=10;}int n=5;f(&n);函数中的n是调用的n的地址 则函数中n的地址可能为0x00000002.所以修改时是修改0x00000002中的数字.另外由于是复制的 int*y);这种是能够改变的 因为改变的是指针指向内存的值
|||
<1>void f(int n){n=10;}int n=5;f(n);函数中的n为调用的n(这里为5)的复制体.也就是有两个n.比如调用的n的地址为0x00000001 int y);这种参数是不能够改变实参的 因为交换的只是函数内部的变量的值void swap (int*x
void SWAP(int x 因为简洁明了
|||
为什么要该实参的值 第2个函数的形参是指针因此是直接对指向的地址操作 实参就是调用有参函数时传下去的量 不知道你原本想写的是什么
c语言的一个问题 -关于怎么能改变实参
最新推荐文章于 2023-10-21 14:38:47 发布
1447

被折叠的 条评论
为什么被折叠?



