当前位置:网站首页>Part 1 - Chapter 2 pointer operation
Part 1 - Chapter 2 pointer operation
2020-11-08 19:28:00 【Li Lihao】
stay C In language , For any type T, Can be in T A corresponding variable containing the address of the object is generated at the memory address where it is located . This variable , It's actually a variable that points to an object , therefore , These variables are called The pointer .
Pointers are precise and efficient tools for building data structures and manipulating memory .
Chapter structure
- Pointer basis
- Storage allocation
- Arithmetic operations on data sets and pointers
- As a pointer to a function parameter
- The pointer to the pointer
- Generic pointers and type conversions
- A function pointer
Pointer basis
A pointer stores the address of the data in memory, not the data itself .
The best way to understand pointers : Charting .
- The pointer is usually linked by position with arrows , Instead of drawing the actual address in the icon .
- When the pointer complements any data ,, That is, the pointer is set to NULL when , Use two vertical lines to show .
- Dangling pointer : Pointer to an invalid address .
Some examples of errors that may result in dangling pointers : Cast any integer variable into a pointer variable ; Manipulating pointers that exceed the bounds of the array ; Release one or more pointers that are still referenced .
Storage allocation
The size of pointer variables is usually related to the compiler settings and some specific C Implementation of the Type qualifiers of .
- You must remember : When you declare a pointer , It just allocates space for the pointer itself , There is no space allocated for the data referenced by the pointer .
by Data allocation space Two methods of :
- (1) Declare a variable directly
- (2) Dynamically allocate storage space at runtime ( for example : Use malloc or realloc).
When you declare a variable , What happened?
When you declare a variable , The compiler will reserve enough memory space according to the type of variable .
The storage space of variables is automatically allocated by the system , But this storage space does not exist permanently throughout the life cycle of the program .
The automatic variable is A variable whose storage space can be automatically allocated and released when entering or leaving a module or function
stay C In language , When you want to dynamically allocate storage space , You get a pointer to a heap storage space ( The first 3 Chapter ), This storage space is managed by us , And it will always be there , Unless we explicitly release it .
As a pointer to a function parameter
stay C The function in the call language plays an important role . most important of all , Pointers support passing parameters as references to functions ( Call by reference ).
When passing parameters by reference , When the function changes this parameter , The value of the changed parameter will always exist , Even after the function exits . When a pass function is called by value , At this point, the value change can only last until the function returns .
It is an efficient way to pass large and complex function parameters with pointers : Because it's just passing a pointer instead of a full copy of the data into the function , This can greatly save memory space
Call the pass function by reference
版权声明
本文为[Li Lihao]所创,转载请带上原文链接,感谢
边栏推荐
- Select sort
- 学会了volatile,你变心了,我看到了
- How much faster is a server equipped with a SSD than a mechanical hard disk
- Swagger介绍和应用
- latex入门
- Django之简易用户系统(3)
- Regular backup of WordPress website program and database to qiniu cloud
- Countdownlatch explodes instantly! Based on AQS, why can cyclicbarrier be so popular?
- Mongodb database
- Dynamic relu: Microsoft's refreshing device may be the best relu improvement | ECCV 2020
猜你喜欢

Dynamic relu: Microsoft's refreshing device may be the best relu improvement | ECCV 2020

动态规划设计:最大子数组

latex入门

CountDownLatch 瞬间炸裂!同基于 AQS,凭什么 CyclicBarrier 可以这么秀?

Swagger介绍和应用

Not a programmer, code can't be too ugly! The official writing standard of Python: pep8 everyone should know

Process thread coroutine

markdown使用

接口测试工具Eolinker进行post请求

What is forsage Ethereum smart contract? What is the global decline of Ethereum
随机推荐
To introduce to you, this is my flow chart software—— draw.io
git操作与分支管理规范
Dynamic relu: Microsoft's refreshing device may be the best relu improvement | ECCV 2020
使用基于GAN的过采样技术提高非平衡COVID-19死亡率预测的模型准确性
Is parameter passing in go language transfer value or reference?
Talk about go code coverage technology and best practices
Using GaN based oversampling technique to improve the accuracy of model for mortality prediction of unbalanced covid-19
MongoDB数据库
Development and deployment of image classifier application with fastai
CountDownLatch 瞬间炸裂!同基于 AQS,凭什么 CyclicBarrier 可以这么秀?
Chapter 2 programming exercises
C + + opencv4.3 sift matching
C/C++知识分享: 函数指针与指针函数,看完这篇你还能不懂?
Summary of interface test case ideas
Flink系列(0)——准备篇(流处理基础)
write文件一个字节后何时发起写磁盘IO
Infix expression to suffix expression
RSA asymmetric encryption algorithm
Using k3s to create local development cluster
Flink series (0) -- Preparation (basic stream processing)