当前位置:网站首页>Mortal immortal cultivation pointer-1
Mortal immortal cultivation pointer-1
2022-07-06 13:27:00 【Programmer rock】
One 、 The goal of the tutorial
- Through the theme of mortal cultivation , Study C/C++ The pointer , From entry to mastery ( Mastery here refers to the mastery of knowledge points ).
- In the use of pointers , Meet the technical requirements of enterprise development and written examination .
- Effect demonstration : Make it easy FPS Unlimited ammunition and blood lock in shooting games 、 Blinking and other functions .
Two 、 Tutorial preparation
1. Prepare any development environment .gcc, g++, vs, devc++, vscode Wait for any one .
2. Don't know how to cultivate Immortals , You can also master this tutorial without obstacles .
3、 ... and 、 The Syllabus

Four 、 The influence of mortal cultivation on me
One man fixes the immortals , Especially later , There are many slots . But the flaws are not hidden , every last IT people , Can find their own shadow in it . Dark forest law of three bodies , There is no way to disprove , There is no evidence , It's too far away from us . And the jungle law of the jungle in the fairy world , But now you can see , Touches . Every self-study scholar , It's the casual practice without any support , Along the way , All kinds of pits and traps ...
Follow Rock, Let's practice together , To conquer completely C/C++ The pointer , Quickly improve your technical strength !
5、 ... and 、 Pointer practice period
5.1 Pointer zero foundation quick start
I'm going to the sea of stars , Look for Xiuxian cave , There is exuberant aura , It's just too far away from China , Thousands of miles apart , How can we “ teleport ”? The immortal world “ Transmission array ”, You deserve it !
The transmission array is in the cultivation world “ The pointer ”.

5.1.1 Use “ The pointer ” Make your own transmission array
char LuanXingHai; // A sea of stars , There is a lot of aura in the world of cultivating immortals , It is especially suitable for the continent of cultivating immortals .
// Let the sea of stars , Set to H, The way 1:
LuanXingHai = 'A';
printf("%c\n", LuanXingHai);
// Suppose we don't have permission directly to LuanXingHai Set up the data , You can use the method 2:
// 1. Record LuanXingHai The address of
int addr = &LuanXingHai;
// 2. Make a transmission array , Namely “ The pointer ”
char* p;
// 3. hold LuanXingHai The address of , Assign a value to the transmission matrix
p = addr; // Pay attention to C++ Language compiler , You need to cast
// 4. Use the transmission array ( The pointer ), Transmit data
*p = 'H';
printf("%c\n", LuanXingHai);Use pointer transfer matrix , Teleport to the holy land of immortality - A sea of stars .

5.1.2 Transmission array ( The pointer ) In two ways
// First usage : Read the data of the designated destination , That is to say “ read ”
char value = *p;
// Second usage , The data “ transmission ” To the designated destination , That is to say “ Write ”
*p = 'H';5.1.3 The relationship between pointer and address
Pointer value , It's essentially an address .
The pointer , It is equivalent to a transmission array . This transmission array , You need to go to an immortal or even a destination first , This destination , The destination transmission address is required , That's it “ The pointer ” Value .

5.1.4 The type of pointer
Different types of transmission arrays , The objects that can be transmitted are different , Force transmission , Talk lead “ Space cracks ”, Cause the object to be destroyed .
Different types of pointers , Only certain types of data can be transmitted , Force transmission , It may lead to unexpected consequences such as data damage .
int lingShi = 512; // Lingshi , A common currency in the celestial world , Equivalent to the gold of secular society
char * p = &lingShi; //C++ The compiler needs to cast
*p = 1;
printf("%d", lingShi); // In small end format computers , Output 513Particular attention , stay C++ In the compiler ( The suffix of the file is .cpp By default c++ compiler ), Different types of pointers are assigned directly , Fail to compile , A cast is required , But in a lot of C In the language compiler , You can assign values directly .
Pointer with mismatched type , Forced access to , May lead to unexpected consequences ! Similar to that in the immortal world “ Space cracks ”, Very dangerous ! The ancient Warcraft of the world of Warcraft , Is to invade the human world from the space crack , Lead to death ...

5.1.5 The underlying understanding of pointers

int lingShi = 100; // Lingshi , A common currency in the celestial world , Equivalent to the gold of secular society
int * p = &lingShi;
printf("%d", *p); // You need to access memory twice in a row 5.2 Addition and subtraction of pointers
Let's go shopping in the black market in the fairy world , Learn the addition and subtraction of pointers by the way .
Pointer plus integer
Stroll the black market , Ask about the price :
// Xiuxianjie black market ,1 Class to 8 The price of level monster
int prices[8] = { 100, 200, 500, 800, 1000, 2000, 5000, 10000 };
// Go to the black market and ask about the price of monsters
int* p = &prices[0]; //prices;
printf("%d\n", *p); //100
p = p + 1; // p++;
printf("%d\n", *p); // 200
p = p + 2;
printf("%d\n", *p); // 800Stroll around the black market in small steps , Ask about the price :
// Xiuxianjie black market ,1 Class to 8 The price of level monster
int prices[8] = { 100, 200, 500, 800, 1000, 2000, 5000, 10000 };
char* p2 = &prices[0]; //prices;
printf("%d\n", *p2); // 100
p2 = p2 + 1; // p++;
printf("%d\n", *p2); // 0Cause analysis :

Conclusion : The pointer +1, Point to the next of the pointer “ data ”. If it is char* The pointer , Then advance one byte , The value of the pointer is only added 1. If it is int* The pointer , Then point to the next integer , And an integer is occupied 4 Bytes of , So the value of the pointer , Actually added 4.
p = p + n; // The pointer p Value , Added n*sizeof(p The data type of the data pointed to )
Pointer minus integer
Step back and check the price
// Xiuxianjie black market ,1 Class to 8 The price of level monster
int prices[8] = { 100, 200, 500, 800, 1000, 2000, 5000, 10000 };
int* p1 = &prices[1]; //prices;
printf("%d\n", *p1); //200
p1 = p1 - 1;
printf("%d\n", *p1); //100Step back and check the price
// Xiuxianjie black market ,1 Class to 8 The price of level monster
int prices[8] = { 100, 200, 500, 800, 1000, 2000, 5000, 10000 };
char* p2 = &prices[1]; //prices;
p2 = p2 - 1;
printf("%d\n", *p2); // 0Cause analysis :

p = p - n; // The pointer p Value , Less n*sizeof(p The data type of the data pointed to )
Pointer minus pointer
// Xiuxianjie black market ,1 Class to 8 The price of level monster
int prices[8] = { 100, 200, 500, 800, 1000, 2000, 5000, 10000 };
int* p1 = &prices[0];
int* p2 = &prices[5];
printf("%d\n", p2 - p1); // 5
char* p3 = &prices[0];
char* p4 = &prices[5];
printf("%d\n", p4 - p3); // 20Pointer minus pointer , The result is how many points are separated between these two pointers “ Corresponding to the type ” The data of .
Comparison of pointers
// Xiuxianjie black market ,1 Class to 8 The price of level monster
int prices[8] = { 100, 200, 500, 800, 1000, 2000, 5000, 10000 };
for (int *p1 = prices; p1 < prices + 8; p1++) {
printf("%d ", *p1); // Forward output various prices
}
printf("\n");
for (int* p1 = prices+7; p1 >= prices; p1--) {
printf("%d ", *p1); // Reverse output various prices
}Comparison of pointers , Is stored in the pointer “ Address values ”, Compare according to the rules of unsigned integers .
边栏推荐
- FileInputStream和BufferedInputStream的比较
- 初识C语言(上)
- 4. Binary search
- 20220211-CTF-MISC-006-pure_ Color (use of stegsolve tool) -007 Aesop_ Secret (AES decryption)
- 5. Download and use of MSDN
- MySQL 30000 word essence summary + 100 interview questions, hanging the interviewer is more than enough (Collection Series
- Tyut Taiyuan University of technology 2022 introduction to software engineering summary
- 继承和多态(上)
- 西安电子科技大学22学年上学期《信号与系统》试题及答案
- TYUT太原理工大学往年数据库简述题
猜你喜欢

Interview Essentials: talk about the various implementations of distributed locks!

阿里云微服务(三)Sentinel开源流控熔断降级组件

凡人修仙学指针-2

The overseas sales of Xiaomi mobile phones are nearly 140million, which may explain why Xiaomi ov doesn't need Hongmeng

Conceptual model design of the 2022 database of tyut Taiyuan University of Technology

MPLS experiment

5.MSDN的下载和使用

4. Binary search

Small exercise of library management system

(超详细二)onenet数据可视化详解,如何用截取数据流绘图
随机推荐
4. Binary search
arduino+DS18B20温度传感器(蜂鸣器报警)+LCD1602显示(IIC驱动)
西安电子科技大学22学年上学期《基础实验》试题及答案
TYUT太原理工大学2022软工导论简答题
TYUT太原理工大学2022数据库之关系代数小题
4.分支语句和循环语句
There is always one of the eight computer operations that you can't learn programming
MySQL Database Constraints
View UI Plus 发布 1.1.0 版本,支持 SSR、支持 Nuxt、增加 TS 声明文件
First acquaintance with C language (Part 1)
魏牌:产品叫好声一片,但为何销量还是受挫
4.30动态内存分配笔记
string
Tyut Taiyuan University of technology 2022 introduction to software engineering
六种集合的遍历方式总结(List Set Map Queue Deque Stack)
Alibaba cloud microservices (II) distributed service configuration center and Nacos usage scenarios and implementation introduction
1.初识C语言(1)
西安电子科技大学22学年上学期《信号与系统》试题及答案
用栈实现队列
[中国近代史] 第九章测验