当前位置:网站首页>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!
边栏推荐
- Thymeleaf th:classappend attribute append th:styleappend style append th:data- custom attribute
- Shen Ziyu, nouveau Président de Meizu: M. Huang Zhang, fondateur de Meizu, agira comme conseiller stratégique pour les produits scientifiques et technologiques de Meizu
- R语言使用nnet包的multinom函数构建无序多分类logistic回归模型、使用coef函数获取模型中每个变量(自变量改变一个单位)对应的对数优势比(log odds ratio)
- How to protect user privacy without password authentication?
- Sorter evolution of ticdc 6.0 principle
- 3W principle [easy to understand]
- Use the word "new" to attract curious people
- Thymeleaf common functions
- Strong connection component
- Solution of commercial supply chain collaboration platform in household appliance industry: lean supply chain system management, boosting enterprise intelligent manufacturing upgrading
猜你喜欢
魅族新任董事長沈子瑜:創始人黃章先生將作為魅族科技產品戰略顧問
区间 - 左闭右开
无密码身份验证如何保障用户隐私安全?
非技术部门,如何参与 DevOps?
How to protect user privacy without password authentication?
CYCA少儿形体礼仪 宁波市培训成果考核圆满落幕
How to introduce devsecops into enterprises?
魅族新任董事长沈子瑜:创始人黄章先生将作为魅族科技产品战略顾问
Tiflash compiler oriented automatic vectorization acceleration
Thymeleaf th:classappend attribute append th:styleappend style append th:data- custom attribute
随机推荐
日化用品行业智能供应链协同系统解决方案:数智化SCM供应链,为企业转型“加速度”
R语言ggplot2可视化:gganimate包基于transition_time函数创建动态散点图动画(gif)、使用shadow_mark函数为动画添加静态散点图作为动画背景
Thymeleaf th:classappend属性追加 th:styleappend样式追加 th:data-自定义属性
C - Divisors of the Divisors of An Integer Gym - 102040C
Catch all asynchronous artifact completable future
R语言使用MASS包的polr函数构建有序多分类logistic回归模型、使用coef函数获取模型中每个变量(自变量改变一个单位)对应的对数优势比(log odds ratio)
【学习笔记】图的连通性与回路
Countermeasures of enterprise supply chain management system in UCA Era
SaaS multi tenant solution for FMCG industry to build digital marketing competitiveness of the whole industry chain
Why do mechanical engineers I know complain about low wages?
POI set the data format of the column (valid)
Principle and performance analysis of lepton lossless compression
不相交集
04_ Use of solrj7.3 of solr7.3
LeetCode_ 69 (square root of x)
The IPO of Ruineng industry was terminated: the annual revenue was 447million and it was planned to raise 376million
Google eventbus usage details
VC开发非MFC程序内存泄漏跟踪代码
How to protect user privacy without password authentication?
01 、Solr7.3.1 在Win10平台下使用jetty的部署及配置