当前位置:网站首页>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]所创,转载请带上原文链接,感谢
边栏推荐
- TypeScript(1-2-2)
- Part I - Chapter 1 Overview
- CountDownLatch 瞬间炸裂!同基于 AQS,凭什么 CyclicBarrier 可以这么秀?
- Using GaN based oversampling technique to improve the accuracy of model for mortality prediction of unbalanced covid-19
- Using fastai to develop and deploy image classifier application
- Js中常见的内存泄漏场景
- Your random IO hard disk
- 选择排序
- Dynamic relu: Microsoft's refreshing device may be the best relu improvement | ECCV 2020
- 我用 Python 找出了删除我微信的所有人并将他们自动化删除了
猜你喜欢
随机推荐
Dynamic relu: Microsoft's refreshing device may be the best relu improvement | ECCV 2020
Using k3s to create local development cluster
使用基于GAN的过采样技术提高非平衡COVID-19死亡率预测的模型准确性
WordPress网站程序和数据库定时备份到七牛云图文教程
RSA asymmetric encryption algorithm
后缀表达式转中缀表达式
Dynamic ReLU:微软推出提点神器,可能是最好的ReLU改进 | ECCV 2020
Mongodb add delete modify query operation
数组初相识
Creating a text cloud or label cloud in Python
中缀表达式转后缀表达式
Infix expression to suffix expression
Countdownlatch explodes instantly! Based on AQS, why can cyclicbarrier be so popular?
abp(net core)+easyui+efcore实现仓储管理系统——出库管理之五(五十四)
npm install 无响应解决方案
What is forsage Ethereum smart contract? What is the global decline of Ethereum
在Python中创建文字云或标签云
One minute comprehensive understanding of forsage smart contract global shared Ethereum matrix plan
If the programming language as martial arts unique! C++ is Jiu Yin Jing. What about programmers?
Swagger介绍和应用