C语言指针变量作为函数参数
0x01
指针变量作为函数参数的作用是:将一个变量的地址传送到另一个函数中。
0x02
简单的例子:虽然都能实现功能,但意义不同。
正确的写法:
#include <stdio.h> void shuchu(int *p)
{
printf("%d\n", *p);
} int main()
{
int a;
int *pa;
scanf("%d", &a);
pa = &a;
shuchu(pa); //pa是地址
}
骗人的写法:
#include <stdio.h> void shuchu(int *p)
{
printf("%d\n", *p);
} int main()
{
int a;
int *pa;
scanf("%d", &a);
pa = &a;
//shuchu(*pa);
}
注意第14行,是骗人的写法,虽然用到了指针,但是和没用一样,因为只是赋值,然后还是用的原来的值;
总的来说,还是强调指针作为函数参数的作用是将变量的地址传递到参数中,而不是传递的是原来的值。
C语言指针变量作为函数参数的更多相关文章
- C语言---指针变量作为函数参数
在C语言中,函数的参数不仅可以是整数.小数.字符等具体的数据,还可以是指向它们的指针.用指针变量作函数参数可以将函数外部的地址传递到函数内部,使得在函数内部可以操作函数外部的数据,并且这些数据不会随着 ...
- [C++程序设计]用指针变量作函数参数接收数组地址
#include <iostream> using namespace std; void select_sort(int *p, int n) { int i, j, k; ; i &l ...
- C++(二十二) — 指针变量、函数指针、void指针
1.指针变量 (1)指针变量必须在初始化后才可以正常使用,初始化就是给他分配一个有效的数据地址. 先初始化,后使用. (2)指针可以进行加减运算,++ 或者 --:将指针的位置向前或者向后移动一个数据 ...
- go语言结构体作为函数参数,采用的是值传递
经过验证,go语言结构体作为函数参数,采用的是值传递.所以对于大型结构体传参,考虑到值传递的性能损耗,最好能采用指针传递. 验证代码: package main import ( "fmt& ...
- C语言中变量和函数的作用域和链接属性
C语言中变量和函数的作用域和链接属性 作用域 代码块作用域: 代码块指的是使用"{}"包围起来的部分. 在代码块中定义的变量,代码块之外是不能访问的. 代码块嵌套之后的变量作用域, ...
- [C++程序设计]用函数指针变量调用函数
指针变量也可以指向一个函数.一个函数在编译时被分配给一个入口地址.这个函数入口地址就称为函数的指针.可以用一个指针变量指向函数,然后通过该指针变量调用此函数 #include <iostream ...
- golang中数组指针和指针数组当做函数参数如何修改数组中的值
先理解:数组指针它的类型时指针,指针数组它的类型时数组 1. 数组指针当做函数的参数 package main import "fmt" func changeData(dataA ...
- C语言--- 高级指针2(结构体指针,数组作为函数参数)
一.结构体指针 1. 什么是结构体指针?指向结构体变量的指针 结构体: typedef struct stu{ char name[ ...
- C++用指针变量作为函数的参数接受数组的值的问题的总结
实参和形参的四种结合方式 实参 形参 实例 数组名 数组名 1.1 数组名 指针变量 1.2 指针变量 数组名 1.3 指针变量 指针变量 1.4 本文以输入10个整数,然后对其进行排序,然后输出的程 ...
随机推荐
- redis之(二十一)redis之深入理解Spring Redis的使用
关于spring redis框架的使用,网上的例子很多很多.但是在自己最近一段时间的使用中,发现这些教程都是入门教程,包括很多的使用方法,与spring redis丰富的api大相径庭,真是浪费了这么 ...
- bind绑定多个事件切换
eg: $(function(){ $("div").bind('mouseover mouseover',function(){ $(this.tog ...
- java JSONObject/JSONArray详解
应用架包:json-lib-2.4-jdk15.jar.及相关依赖架包. 一.JSONObject和JSONArray对象 -------------------------------------- ...
- [redis] Node is not empty. Either the node already knows other nodes
Connecting to node 172.168.63.202:7001: OK [ERR] Node 172.168.63.202:7001 is not empty. Either the n ...
- [Spring MVC] - JSON
Spring MVC中使用JSON,先必需引用两个包:jackson-core-asl-1.9.13.jar.jackson-mapper-asl-1.9.13.jar 因为需要使用到jquery测试 ...
- Python 面向对象2
静态方法 静态方法相当于函数,可以不创建对象直接引用 如果在类里面用静态方法,相当于函数,可以不创建对象,直接是用类里面的方法,你就当它是函数. 静态方法名义上归类管理,实际上静态方法访问不了类或实例 ...
- 自定义 Activity 的 标题栏 TitleBar
自定义 Activity 的 标题栏 TitleBar 1. 修改标题栏的高度,背景 编辑styles.xml,添加: <?xmlversion="1.0" encoding ...
- delphi中webbrowser的用法
WebBrowser1.GoHome; //到浏览器默认主页 WebBrowser1.Refresh; //刷新 WebBrowser1.GoBack; //后退 WebBrowser1.GoForw ...
- contains 方法
不管在c#中还是java中,很多类型都有contains方法.它的原理是什么? 看一个java的例子 http://blog.csdn.net/fwwdn/article/details/674684 ...
- left join 取一条数据
产品生产过程中要记录产品在制作过程中的不良历史,即使在一个工序,也可以产生多条不良历史记录,所有的不良信息保存在B表中.假设产品在打包工序,存放打包工序成品参数记录的表A,数据是唯一的.但在打包过程中 ...