当前位置:网站首页>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!
边栏推荐
- 03_ Dataimport of Solr
- Shenziyu, the new chairman of Meizu: Mr. Huang Zhang, the founder, will serve as the strategic adviser of Meizu's scientific and technological products
- Assembly language
- Thymeleaf common functions
- Catch all asynchronous artifact completable future
- VC development of non MFC program memory leak tracking code
- 直播预告|如何借助自动化工具落地DevOps(文末福利)
- R语言ggplot2可视化:gganimate包基于transition_time函数创建动态散点图动画(gif)、使用shadow_mark函数为动画添加静态散点图作为动画背景
- Loop invariant
- LeetCode_ 67 (binary sum)
猜你喜欢
Loop invariant
Principle and performance analysis of lepton lossless compression
Thymeleaf 使用后台自定义工具类处理文本
为什么我认识的机械工程师都抱怨工资低?
无密码身份验证如何保障用户隐私安全?
Current situation, trend and view of neural network Internet of things in the future
freesurfer运行完recon-all怎么快速查看有没有报错?——核心命令tail重定向
What is the future development trend of neural network Internet of things
Which Internet companies are worth going to in Shenzhen for software testers [Special Edition for software testers]
申请代码签名证书时如何选择合适的证书品牌?
随机推荐
04_ Use of solrj7.3 of solr7.3
tidb-dm报警DM_sync_process_exists_with_error排查
After the microservice project is deployed, static resources and files uploaded to upload cannot be accessed. Solution
Longest common subsequence dynamic programming
动态规划
How to protect user privacy without password authentication?
R语言ggplot2可视化:使用ggplot2可视化散点图、使用labs参数自定义X轴的轴标签文本(customize X axis labels)
R language uses the multinom function of NNET package to build an unordered multi classification logistic regression model, and uses the coef function to obtain the log odds ratio corresponding to eac
Sorter evolution of ticdc 6.0 principle
Thymeleaf common functions
How to deeply understand the design idea of "finite state machine"?
3W principle [easy to understand]
How to call the function mode of one hand and one machine
Fonctions communes de thymeleaf
如何将 DevSecOps 引入企业?
Guofu hydrogen energy rushes to the scientific and Technological Innovation Board: it plans to raise 2billion yuan, and 360million yuan of accounts receivable exceed the revenue
The speed monitoring chip based on Bernoulli principle can be used for natural gas pipeline leakage detection
The forked VM terminated without saying properly goodbye
别不服气。手机功能升级就是强
3W原则[通俗易懂]