当前位置:网站首页>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 .
边栏推荐
- Several high-frequency JVM interview questions
- 凡人修仙学指针-1
- Cloud native trend in 2022
- Interview Essentials: talk about the various implementations of distributed locks!
- Tyut Taiyuan University of technology 2022 introduction to software engineering
- Floating point comparison, CMP, tabulation ideas
- 【九阳神功】2019复旦大学应用统计真题+解析
- 3.C语言用代数余子式计算行列式
- 4.分支语句和循环语句
- Arduino+ds18b20 temperature sensor (buzzer alarm) +lcd1602 display (IIC drive)
猜你喜欢

Questions and answers of "signal and system" in the first semester of the 22nd academic year of Xi'an University of Electronic Science and technology

Design a key value cache to save the results of the most recent Web server queries

2. C language matrix multiplication

凡人修仙学指针-2

魏牌:产品叫好声一片,但为何销量还是受挫

MySQL 30000 word essence summary + 100 interview questions, hanging the interviewer is more than enough (Collection Series

学编程的八大电脑操作,总有一款你不会

抽象类和接口

Decomposition relation model of the 2022 database of tyut Taiyuan University of Technology

(ultra detailed onenet TCP protocol access) arduino+esp8266-01s access to the Internet of things platform, upload real-time data collection /tcp transparent transmission (and how to obtain and write L
随机推荐
TYUT太原理工大学往年数据库简述题
String class
Rich Shenzhen people and renting Shenzhen people
JS interview questions (I)
1.C语言矩阵加减法
魏牌:产品叫好声一片,但为何销量还是受挫
One article to get UDP and TCP high-frequency interview questions!
Branch and loop statements
继承和多态(上)
阿里云微服务(一)服务注册中心Nacos以及REST Template和Feign Client
Tyut Taiyuan University of technology 2022 introduction to software engineering
【九阳神功】2020复旦大学应用统计真题+解析
Alibaba cloud microservices (II) distributed service configuration center and Nacos usage scenarios and implementation introduction
12 excel charts and arrays
First acquaintance with C language (Part 1)
View UI Plus 发布 1.3.1 版本,增强 TypeScript 使用体验
Atomic and nonatomic
TYUT太原理工大学2022数据库大题之概念模型设计
【九阳神功】2018复旦大学应用统计真题+解析
CorelDRAW plug-in -- GMS plug-in development -- Introduction to VBA -- GMS plug-in installation -- Security -- macro Manager -- CDR plug-in (I)