当前位置:网站首页>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!
边栏推荐
- Postman简介、安装、入门使用方法详细攻略!
- Tiflash compiler oriented automatic vectorization acceleration
- TiCDC 6.0原理之Sorter演进
- 分享 20 个稀奇古怪的 JS 表达式,看看你能答对多少
- 动态规划
- 魅族新任董事长沈子瑜:创始人黄章先生将作为魅族科技产品战略顾问
- 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
- Longest common subsequence dynamic programming
- How to deeply understand the design idea of "finite state machine"?
- Thymeleaf 使用后台自定义工具类处理文本
猜你喜欢

Thymeleaf 使用后台自定义工具类处理文本

区间 - 左闭右开

Opengauss database source code analysis series articles -- detailed explanation of dense equivalent query technology (Part 2)

Online electronic component purchasing Mall: break the problem of information asymmetry in the purchasing process, and enable enterprises to effectively coordinate management

周大福践行「百周年承诺」,真诚服务推动绿色环保

分享 20 个稀奇古怪的 JS 表达式,看看你能答对多少

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

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

SaaS multi tenant solution for FMCG industry to build digital marketing competitiveness of the whole industry chain

TDengine 社区问题双周精选 | 第三期
随机推荐
软件测试人在深圳有哪些值得去的互联网公司【软件测试人员专供版】
分享 12 个最常用的正则表达式,能解决你大部分问题
最长公共子序列 - 动态规划
非技术部门,如何参与 DevOps?
TiFlash 源码解读(四) | TiFlash DDL 模块设计及实现分析
Chow Tai Fook fulfills the "centenary commitment" and sincerely serves to promote green environmental protection
3W principle [easy to understand]
Share 20 strange JS expressions and see how many correct answers you can get
PMP考试20天能通过吗?
汇编语言 assembly language
Online electronic component purchasing Mall: break the problem of information asymmetry in the purchasing process, and enable enterprises to effectively coordinate management
01 、Solr7.3.1 在Win10平台下使用jetty的部署及配置
C - Divisors of the Divisors of An Integer Gym - 102040C
Thymeleaf 使用后台自定义工具类处理文本
Hongmeng fourth training
mysql 自定义函数 身份证号转年龄(支持15/18位身份证)
LeetCode_ 69 (square root of x)
Countermeasures of enterprise supply chain management system in UCA Era
申请代码签名证书时如何选择合适的证书品牌?
What category does the Internet of things application technology major belong to