当前位置:网站首页>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 513
Particular 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); // 800
Stroll 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); // 0
Cause 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); //100
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 };
char* p2 = &prices[1]; //prices;
p2 = p2 - 1;
printf("%d\n", *p2); // 0
Cause 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); // 20
Pointer 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 .
边栏推荐
- 凡人修仙学指针-2
- The overseas sales of Xiaomi mobile phones are nearly 140million, which may explain why Xiaomi ov doesn't need Hongmeng
- 用栈实现队列
- 1. C language matrix addition and subtraction method
- View UI plus released version 1.2.0 and added image, skeleton and typography components
- 4.二分查找
- Inheritance and polymorphism (Part 2)
- 167. Sum of two numbers II - input ordered array - Double pointers
- 165. Compare version number - string
- MySQL 30000 word essence summary + 100 interview questions, hanging the interviewer is more than enough (Collection Series
猜你喜欢
系统设计学习(二)Design a key-value cache to save the results of the most recent web server queries
Abstract classes and interfaces
Change vs theme and set background picture
8.C语言——位操作符与位移操作符
MySQL 30000 word essence summary + 100 interview questions, hanging the interviewer is more than enough (Collection Series
2.初识C语言(2)
C language to achieve mine sweeping game (full version)
Alibaba cloud microservices (III) sentinel open source flow control fuse degradation component
(super detailed II) detailed visualization of onenet data, how to plot with intercepted data flow
MySQL Database Constraints
随机推荐
Questions and answers of "basic experiment" in the first semester of the 22nd academic year of Xi'an University of Electronic Science and technology
Alibaba cloud microservices (III) sentinel open source flow control fuse degradation component
TYUT太原理工大学2022软工导论考试题型大纲
162. Find peak - binary search
Arduino+ds18b20 temperature sensor (buzzer alarm) +lcd1602 display (IIC drive)
阿里云微服务(一)服务注册中心Nacos以及REST Template和Feign Client
JS interview questions (I)
5.函数递归练习
(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
ROS machine voice
【九阳神功】2018复旦大学应用统计真题+解析
【毕业季·进击的技术er】再见了,我的学生时代
Alibaba cloud microservices (II) distributed service configuration center and Nacos usage scenarios and implementation introduction
图书管理系统小练习
MySQL 30000 word essence summary + 100 interview questions, hanging the interviewer is more than enough (Collection Series
Floating point comparison, CMP, tabulation ideas
学编程的八大电脑操作,总有一款你不会
165. Compare version number - string
TYUT太原理工大学2022数据库之关系代数小题
View UI Plus 发布 1.1.0 版本,支持 SSR、支持 Nuxt、增加 TS 声明文件