指针如何在函数参数中传递?带有示例程序
How pointer passed in Fuction arguments ? With example Program?
我想知道函数参数中指针的流。请帮助我如何逐行执行以下内容及其流程,
#include <stdio.h>
int main() {
int i = 97, *p = &i;
foo(&i); printf("%d ", *p);
}
void foo(int *p) {
int j = 2;
p = &j;
printf("%d ", *p);
}
首先,你应该让编译器看到 foo()
的声明,然后再调用它
#include <stdio.h>
void foo(int *p); // <<<<<<<<<< Declare your function first!
int main() {
int i = 97, *p = &i;
foo(&i); printf("%d ", *p);
}
void foo(int *p) {
int j = 2;
p = &j;
printf("%d ", *p);
}
当你到达这个阶段时,玩它。
在foo()
内部,您只是更改本地堆栈上的p
以指向j
,不会影响p
,也不会影响main
的i
,因为p
已被值(副本)传递。
如果要从函数内部更改i
的值,则需要以这种方式更改它:
void foo(int *p) {
*p = 2;
printf("%d ", *p);
}
相关文章:
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- c++类声明时,相同的例程,不同的成员变量类型
- C++为线程工作动态地分割例程
- 子例程,不使用 pow,并带有参数和返回
- 直接在RcppArmadillo中调用LAPACK例程
- 如何将C++子例程链接到 x86 程序集程序?
- PX 转换例程编译问题
- 成功完成TLS握手后,服务器关闭时出现错误的SSL例程:SSL3_GET_RECORD:错误的版本号
- 只允许授权代码调用库中的例程
- JNI 不满意链接错误: 动态链接库 (DLL) 初始化例程失败
- 调用子例程时类型不匹配
- 将分配给C++数组传递给 Fortran 子例程
- Android Studio 3.1.2 - 无法运行C++子例程"No implementation found for Java.lang.String..."
- Posix 线程类和启动例程 (pthread)
- OpenBLAS 只为一个例程设置线程数
- 检查并行化 BLAS 例程的结果
- 位置实用程序例程与使用类型相同的命名空间
- Qt事件后,长例程冻结了我的应用程序一段时间
- 为多线程程序增强非阻塞读写例程
- 从c++程序中调用Stan例程