1.指针的自增

#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
int main() {
    int ages[] = {21,51,26,36,41,25,36};
    int len = sizeof(ages) / sizeof(ages[0]);

    //使用数组的方式来访问数组
    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]);

    int* p = ages;

    //访问第一个元素
    printf("数组的第一个元素:%d\n",*p); //*p表示读取所指指针的变量的值,即ages的第一个值

    //访问第二个元素
    //p++;  //即p=p+1;
    //printf("数组的第二个元素:%d,第二个元素的地址:0x%p\n",*p,p);

    for (int i = 0; i < len; i++) {
        printf("数组的第%d个的年龄是:%d,地址是0x%p\n", i + 1, *p,p);
        p++;
    }

    printf("-----------------------\n");

    char ch[4] = {'a','b','c','d'};
    char* cp = ch;
    for (int i = 0; i < 4; i++) {
        printf("数组的第%d个的年龄是:%c,地址是0x%p\n", i + 1, *cp, cp);
        cp++;
    }//总结:p++的概念是在p当前地址的基础上,自增p对应类型的大小,也就是说 p = p+ 1*(sizeof(类型))
    system("pause");
    return 0;
}

 

 2.指针的自减

#include <iostream>
#include <string>
#include <windows.h>
/*
 让用户输入一个字符串,然后反向输出,不能改变原来的字符串!
 如:"12345"逆转成"54321"输出
*/
using namespace std;
int main() {
    char input[128];
    int len;
    char tmp;

    scanf_s("%s",input,128);
    len = strlen(input);

    /*
    //方法1    交换
    for (int i = 0; i < len / 2; i++) {
        tmp = input[i];
        input[i] = input[len-i-1];
        input[len - i - 1] = tmp;
    }

    for (int i = 0; i < len; i++) {
        printf("%c",input[i]);
    }
    printf("\n");  */

    /*
    //第二种方法
    for (int i = 0; i < len; i++) {
        printf("%c",input[len-i-1]);
    }
    printf("\n");  */

    //第三种方法
    char* p = &input[len - 1];

    for (int i = 0; i < len; i++) {
        printf("%c",*p--);
    }
    printf("\n");

    system("pause");
    return 0;
}

posted on 2022-09-11 15:56  wshidaboss  阅读(221)  评论(0编辑  收藏  举报