嵌入式C语言9 指针的计算

指针辨析知识点:

定义 int x = 1, *pa =&x ,y;

++pa : pa中存储的是地址,指针加4个字节,后赋值。
pa++ : 先赋值,后指针地址加4个字节。
++pa,++(pa),pa++,(pa)++

  1. ++pa :
    y = ++
    pa 我们都知道++在前面的话是先加再赋值,*pa就是对pa的地址取值,也就是x,所以这句话等同于 y = ++x ,现在x等于1,++x后x等于2,所以这时候y也等于2,pa还是指向x,pa中的地址没有变化。

2.++(*pa)这个和上一个没有区别,只不过便于辨析,我将其拿了出来。

3. *pa++:

y = *pa++ 先赋值y = x ,所以y等于x等于1,然后pa的地址向后移动一个等同于x字节的位置,所以这时候pa地址向后移动4个字节。

  1. (*pa)++;
    看到 *pa带括号直接换成x就可,所以这个就等于 x++,所以就等于y = x++; 这时x等于1,y也等于1,加1后x变成了2,pa的地址不变。
image.png
#include <stdio.h>

int main()
{
    int x =1  , *pa = &x , y;
    y = *pa;
    printf(" y = %d\n", y );
    printf("pa内存储的地址为:%p\n", pa);
    printf("pa内存储的地址为:%p\n", pa++);
    printf("pa内存储的地址为:%p\n", ++pa);
    
    y = ++*pa;
    printf(" y = %d\n", y);
    printf("pa内存储的地址为:%p\n", pa);
    
    y = ++(*pa);
    printf(" y = %d\n", y);
    printf("pa内存储的地址为:%p\n", pa);
    
    y = (*pa)++;
    printf(" y = %d\n", y);
    printf("pa内存储的地址为:%p\n", pa);
    
    y = *pa++;
    printf(" y = %d\n", y);
    printf("pa内存储的地址为:%p\n", pa);
        
    return 0;
} 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,616评论 3 44
  • 前言 在c语言的中主要就是掌握指针和结构体、加链表吧。之前也只是学习过c语言的,但是多年来都做的面向对象的开发,对...
    雪域红鹰阅读 970评论 0 1
  • 指针知识点: 整形指针定义: int a = 0; int *pa = &a ; 指针的含义:指针实际上是一种存放...
    Jinna_8af2阅读 465评论 0 1
  • C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程...
    小辰带你看世界阅读 1,022评论 0 6
  • 推荐指数: 6.0 书籍主旨关键词:特权、焦点、注意力、语言联想、情景联想 观点: 1.统计学现在叫数据分析,社会...
    Jenaral阅读 6,031评论 0 5

友情链接更多精彩内容