C语言指针运算

给一个指针加1表示要让指针指向下一个变量,也就是在地址值上加一个sizeof(指针所指的类型),例如:

int a[10];

int *p=a;

*(p+1)=a[1];

*(p+n)=====ac[n]

 

同理:这些指针运算可以对指针做:

1.给指针加减一个整数(减就是往前移一位)

2.递增递减(++/--)

3.两个指针相减(其实就是两个指针的差值/sizeof)

指针可以进行加减运算,也可以进行比较(比较他们在内存中的地址大小<,<=,==,>,>=,!=   a[0]<a[5]  因为数组中单元的地址是递增排列的),但是不能乘除,指针的乘除没有意义

 

下面的代码为了看起来更加直观(关于指针加减运算):

复制代码
#include <stdio.h>

int main()
{
    char ac[]={0,1,2,3,4,5,};
    char *p=ac;
    char *p1=&ac[5];
    printf("p  =%p\n",p); //p  =000000000062FE00
    printf("p+1=%p\n",p+1); //p+1=000000000062FE01
    printf("*(p+1)=%d\n",*(p+1)); //*(p+1)=1
    printf("p1-p=%d\n",p1-p); //p1-p=5  指的是ac[5]和ac[0]之间能放几个这样类型的东西 
    
    int ai[]={0,1,2,3,4,}; 
    int *q=ai; 
    printf("q  =%p\n",q); //q  =000000000062FDE0
    printf("q+1=%p\n",q+1); // q+1=000000000062FDE4
    printf("*(q+1)=%d\n",*(q+1)); //*(q+1)=1
    return 0;
 } 
复制代码

 

posted @   周周周777  阅读(173)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示