当前位置:网站首页>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!
边栏推荐
- C - Divisors of the Divisors of An Integer Gym - 102040C
- 04_solr7.3之solrJ7.3的使用
- Tiflash compiler oriented automatic vectorization acceleration
- Kunlun Taike rushes to the scientific innovation board: the annual revenue is 130million, and it plans to raise 500million. CETC Taiji holds 40% of the shares
- What is the future development trend of neural network Internet of things
- Disjoint Set
- R語言ggplot2可視化:可視化折線圖、使用theme函數中的legend.position參數自定義圖例的比特置
- 01 、Solr7.3.1 在Win10平台下使用jetty的部署及配置
- Webrtc learning (II)
- 分享 12 个最常用的正则表达式,能解决你大部分问题
猜你喜欢

TDengine 社区问题双周精选 | 第三期

为什么我认识的机械工程师都抱怨工资低?

How does redis implement multiple zones?

How to deeply understand the design idea of "finite state machine"?

Countermeasures of enterprise supply chain management system in UCA Era

非技术部门,如何参与 DevOps?

LeetCode_ 2 (add two numbers)

Thymeleaf th:classappend attribute append th:styleappend style append th:data- custom attribute

循环不变式

Qingda KeYue rushes to the science and Innovation Board: the annual revenue is 200million, and it is proposed to raise 750million
随机推荐
[learning notes] connectivity and circuit of graph
分享 20 个稀奇古怪的 JS 表达式,看看你能答对多少
让秒杀狂欢更从容:大促背后的数据库(下篇)
LeetCode_ 67 (binary sum)
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
C - Divisors of the Divisors of An Integer Gym - 102040C
[learning notes] stage test 1
Hongmeng fourth training
How to call the function mode of one hand and one machine
Tidb DM alarm DM_ sync_ process_ exists_ with_ Error troubleshooting
家用电器行业商业供应链协同平台解决方案:供应链系统管理精益化,助推企业智造升级
01. Solr7.3.1 deployment and configuration of jetty under win10 platform
The speed monitoring chip based on Bernoulli principle can be used for natural gas pipeline leakage detection
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
Don't be unconvinced. Mobile phone function upgrade is strong
关于memset赋值的探讨
freesurfer运行完recon-all怎么快速查看有没有报错?——核心命令tail重定向
The forked VM terminated without saying properly goodbye
无密码身份验证如何保障用户隐私安全?
04_solr7.3之solrJ7.3的使用