当前位置:网站首页>Pointer operation - C language
Pointer operation - C language
2022-07-05 14:21:00 【Cwxh0125】
First , Let's start with a simple piece of code
#include<stdio.h>
int main(void)
{
char ac[]={0,1,2,3,4,5,6,7,8,9};
char *p = ac;
printf("p =%p\n",p);
printf("p+1 =%p\n",p+1);
int ai[]={0,1,2,3,4,5,6,7,8,9};
int *q= ai;
printf("q =%p\n",q);
printf("q+1 =%p\n",q+1);
return 0;
}
After running
p =0*bffbad5a
p+1=p =0*bffbad5b
q =0*bffbad2c
q+1 =0*bffbad30
You can see p+1 Compared with p Address to add 1 and q+1 But added 4 (2c=44 30=48)
Why? ?
because sizeof(char)=1 sizeof(int)=4
So when we add one hour to a pointer Not adding one to the address But add sizeof( type ) Value
#include<stdio.h>
int main(void)
{
char ac[]={0,1,2,3,4,5,6,7,8,9};
char *p = ac;
printf("p =%p\n",p);
printf("p+1 =%p\n",p+1);
printf("*(p+1)=%d\n",*(p+1));
int ai[]={0,1,2,3,4,5,6,7,8,9};
int *q= ai;
printf("q =%p\n",q);
printf("q+1 =%p\n",q+1);
printf("*(q+1)=%d\n",*(q+1));
return 0;
}
After running *(p+1)=1 *(q+1)=1
It indicates that the array where the two pointers are located has moved an element behind Instead of adding one to the address
therefore Add... To a pointer 1 Indicates that you want the pointer to point to the next variable
int a[10];
int *p=a;
*(p+1)--->a[1]
*p++
Take out p The data referred to comes from , When you're done, drop in p Move to the next position
* High priority though , But no ++ High is often used for continuous space operations of array classes
In some CPU On , This can be translated directly into an assembly instruction
Pointer calculation :
1 Add or subtract an integer to the pointer
2 Increasing decreasing
3 Subtraction of two pointers
4 Pointer cannot multiply or divide
The two hands subtract
If the above code *p=&ac[0] *p1=&ac[5] Make p1-p obtain p1-p=5
The difference obtained is not the difference of the address It is Address difference /sizeof The result is that there are several such elements between two pointers
Pointer comparison
<,<=,==,>,>=,!= Can compare the addresses of pointers in memory
The addresses of the cells in the array must be linearly increasing
Two different types of pointers cannot be operated
Pointer type conversion
void* The pointer indicating that you don't know what to point to is calculated with char* identical ( But it's not connected ) Pointers can also convert types
int*p = &i; void*q = (void*)p;
It doesn't change p Type of variable referred to , But let later generations pass through with different eyes p Look at the variables it refers to
I don't think you are anymore int La , I think you are void!
边栏推荐
- mysql8.0JSON_CONTAINS的使用说明
- R语言使用原生包(基础导入包、graphics)中的boxplot函数可视化箱图(box plot)
- [learning notes] connectivity and circuit of graph
- Countermeasures of enterprise supply chain management system in UCA Era
- Shenziyu, the new chairman of Meizu: Mr. Huang Zhang, the founder, will serve as the strategic adviser of Meizu's scientific and technological products
- Lepton 无损压缩原理及性能分析
- 如何将 DevSecOps 引入企业?
- C - Divisors of the Divisors of An Integer Gym - 102040C
- 04_ Use of solrj7.3 of solr7.3
- The speed monitoring chip based on Bernoulli principle can be used for natural gas pipeline leakage detection
猜你喜欢
网上电子元器件采购商城:打破采购环节信息不对称难题,赋能企业高效协同管理
Current situation, trend and view of neural network Internet of things in the future
Which Internet companies are worth going to in Shenzhen for software testers [Special Edition for software testers]
CYCA少儿形体礼仪 宁波市培训成果考核圆满落幕
Loop invariant
Shenziyu, the new chairman of Meizu: Mr. Huang Zhang, the founder, will serve as the strategic adviser of Meizu's scientific and technological products
【学习笔记】阶段测试1
Oneconnect listed in Hong Kong: with a market value of HK $6.3 billion, ye Wangchun said that he was honest and trustworthy, and long-term success
Countermeasures of enterprise supply chain management system in UCA Era
Online electronic component purchasing Mall: break the problem of information asymmetry in the purchasing process, and enable enterprises to effectively coordinate management
随机推荐
R language uses the polR function of mass package to build an ordered multi classification logistic regression model, and uses the coef function to obtain the log odds ratio corresponding to each vari
网上电子元器件采购商城:打破采购环节信息不对称难题,赋能企业高效协同管理
软件测试人在深圳有哪些值得去的互联网公司【软件测试人员专供版】
How to protect user privacy without password authentication?
区间 - 左闭右开
一网打尽异步神器CompletableFuture
What category does the Internet of things application technology major belong to
矩阵链乘 - 动态规划实例
C - Divisors of the Divisors of An Integer Gym - 102040C
关于memset赋值的探讨
非技术部门,如何参与 DevOps?
Chow Tai Fook fulfills the "centenary commitment" and sincerely serves to promote green environmental protection
Qingda KeYue rushes to the science and Innovation Board: the annual revenue is 200million, and it is proposed to raise 750million
Sharing the 12 most commonly used regular expressions can solve most of your problems
dynamic programming
别不服气。手机功能升级就是强
汇编语言 assembly language
Tidb DM alarm DM_ sync_ process_ exists_ with_ Error troubleshooting
Thymeleaf 模板的创建与使用
无密码身份验证如何保障用户隐私安全?