指针的自增和自减

总结

P++/P–的概念,就是p当前地址的基础上,增加/减小p对应类型字节大小。

实际运用1
 #include <stdio.h>
#include <stdlib.h>

int main(void){

    int ages[] = {21,13,24,56,43,24,8};
    int len = sizeof(ages)/sizeof(ages[0]);//数组的大小/整形的大小7x4/4=7

    //1. 使用数组的方式来访问数组
    for(int i = 0; i < len;i++){
        printf("第%d个学员的地址是:%d\n",i+1,ages[i]);
    }
    //打印数组的第一个元素的地址
    printf("ages的地址:0x%p,第一个元素的地址:0x%p\n",ages,&ages[0]);
    //2. 使用指针,访问第一个元素
    int *p = ages;
    for(int j = 0;j < len; j++){
        printf("数组的第%d个元素:%d,地址:0x%p\n",j+1,*p,p);
        p++;
    }
    printf("---------------------------\n");
    char ch[4] ={'q','w','e','r'};
    char *cp = ch;
    for(int k = 0;k < 4; k++){
        printf("数组的第%d个元素:%d,地址:0x%p\n",k+1,*cp,cp);
        cp++;
    }
    system("pause");
    return 0;
}
运行结果

在这里插入图片描述

实际运用2

 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
/**
 *让用户输入一个字符串,然后反向输出,注意不能改变原来的字符串
 *如:“12345”逆转成“54321”输出
*/

int main(void){
    char input[128];
    int len;
    char tmp;
    scanf_s("%s",input,128);//用户输入不超过128个字节
    len = strlen(input);

    //方法1,写一个for,从最后一个输出
   /* for(int i=0;i<len;i++){
        printf("%c",input[len-i-1]);
    }*/

    //方法2,使用指针
    char *p=&input[len-1];
    for(int i = 0;i<len;i++){
        printf("%c",*p--);//先p--再取地址对应的值
       // p--;
    }

    system("pause");
    return 0;
}
运行结果2

在这里插入图片描述


版权声明:本文为ZENGZISUZI原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。