当前位置:网站首页>指针得真正奥义!!!
指针得真正奥义!!!
2022-07-26 22:49:00 【helinliupi-何】
目录
理解指针:
指针所指向的时变量的地址,并且可以通过指针直接改变变量的值
例如:
#include<stdio.h>
int main()
{
int a = 0; //定义int型变量
int* p = &a; //定义int型指针并指向a的地址(&表示地址)
*p = 1; //p指针指向的地址的值赋值为1,相当于a=1
printf("%d\n", a);
return 0;
}结果a = 1
![]()
首先:指针定义的类型必须与所指变量类型相同。如上图都为int型。
其次:定义指针可以理解为先int* p; 再p = &a; (p指向a的地址)这个也是正确书写,我上面写的就相当于把2个p融合为1个p来书写。
最后:*p是等于a的值,就是*p == a;所以*p改变,a的值也要改变。
真正奥义:
普通函数换值
在没指针情况下在函数中改变传递变量值
#include<stdio.h> void hanshu(int b) //函数解释 a传值给b { b = 1; //在函数中使b赋值为1 } int main() { int a = 0; hanshu(a); //函数调用 printf("%d\n", a); return 0; }结果:a = 0

用指针在函数里换值
依然是传变量,在函数里再用指针
#include<stdio.h>
void hanshu(int b) //函数传值给b
{
int* p = &b; //指针p指向b的地址
*p = 1; //指针p指向b的地址的值赋值为1
}
int main()
{
int a = 0;
hanshu(a); //函数调用
printf("%d\n", a);
return 0;
}结果:a = 0;说明在函数中指针定义并不能改变main函数里的传值变量
![]()
* 3.用函数传地址给指针
#include<stdio.h>
void hanshu(int *p) //函数解释使a的地址传递给p(相当于指针p指向a的地址)
{
*p = 1; //指针p指向a的地址的值赋值为1
}
int main()
{
int a = 0;
hanshu(&a); //函数调用
printf("%d\n", a);
return 0;
}结果:a = 1
![]()
总结:
1.可以看出,普通函数里换传递的值改变不了main函数里的变量的值
2.用函数传递地址,用指针接收可以在函数里改变main函数里的变量的值,这也是最重要的指针用法。
谢谢大家阅读!!!
边栏推荐
- 数字集成电路:MOS管器件章(二)
- Lora gateway node converges sensor data
- Nb-iot access to cloud platform
- 7.13 Weilai approved the written examination in advance
- MySQL课程2.表的各种查询
- 2022zui new Tiktok 24-hour round robin live broadcast monitoring (I) live broadcast room start-up monitoring
- (超详尽版,不懂随时评论)Codeforces Round #804 (Div. 2)C The Third Problem
- JUC并发编程
- CAN总线通信应用
- CF 1333C Eugene and an array
猜你喜欢

Lvs+keepalived project practice

C语言实现小游戏【三子棋】注释详细 逻辑清晰 快来看看吧!!

Introduction to STM32 lesson 1

HCIA动态路由RIP基础实验

(title + detailed idea + annotated code) codeforces round 805 (Div. 3) F Equate Multisets

Is index reproduction text generation image is score quantitative experiment whole process reproduction inception score quantitative evaluation experiment step on the pit and avoid the pit process

OSPF在MGRE环境下配置及LSA的优化---减少LSA更新量(汇总、特殊区域)

Static comprehensive experiment (comprehensive exercise of static route, loopback interface, default route, empty interface, floating static)

OSPF static experiment

通过对射式红外传感器计次实验讲解EXTI中断
随机推荐
数字集成电路:MOS管器件章(一)
二层封装技术(HDLC、PPP--PAP\CHAP、GRE)实验练习
静态路由缺省路由vlan实验
CF 1333C Eugene and an array
Educational Codeforces Round 132 (Rated for Div. 2), problem: (D) Rorororobot
Republishing and routing strategy of OSPF
Dynamic routing rip protocol experiment
[explain C language in detail] takes you to play with functions
动态路由rip协议实验
MySQL课程1.简单命令行--简单记录 欢迎补充纠错
TCP的三次握手与四次挥手(简述)
HandsomeForum学习论坛
NB-IOT联网通信
初识网页设计
ESP8266Wi-Fi数据通讯
Lora通信应用开发
微信小程序:用户微信登录流程(附:流程图+源码)
2022zui new Tiktok 24-hour round robin live broadcast monitoring (I) live broadcast room start-up monitoring
Self introduction and planning about programming
离开页面的提示