*p++、(*p)++、*++p、++*p 的区别

安稳与你 提交于 2019-11-30 06:09:22
#include <stdio.h>
int main()
{
    int a[5]={1,2,3,4,5};
    int *p=&a[3];   //这里p指向数组第四个元素4的起始地址。
    *p=100;
    printf("%d\n",*p++);//先取p指向的值100,再将指针p自增1;
    printf("%d\n",*p--);//    printf("%d\n",*--p);//先将指针p自减1,再取指向的值
    return 0;
}
// 100 5 3 

*p++、(*p)++、*++p、++*p 的区别

 int a[5]={1,2,3,4,5};
int *p = a;*p++ 先取指针p指向的值(数组第一个元素1),再将指针p自增1;        cout << *p++; //  结果为 1        cout <<(*p++);  // 1(*p)++ 先去指针p指向的值(数组第一个元素1),再将该值自增1(数组第一个元素变为2        cout << (*p)++; //  1        cout <<((*p)++)  //2*++p   先将指针p自增1(此时指向数组第二个元素),* 操作再取出该值        cout << *++p; //  2        cout <<(*++p)  //2++*p  先取指针p指向的值(数组第一个元素1),再将该值自增1(数组第一个元素变为2)      cout <<++*p; //   2            cout <<(++*p)  //2注意,上面的每条cout输出,要单独输出才能得到后面的结果。字符串与指针
#include <stdio.h>
int main()
{
    char buffer[10]="ABC";
    char *pc;
    pc="hello";
    printf("%s\n",pc);
    pc++;
    printf("%s\n",pc);
    printf("%c\n",*pc);
    pc=buffer;
    printf("%s\n",pc);
    return 0;
 } 

 

 

#include <stdio.h>
int main()
{
    int a[4]={1,3,5,7};
    printf("%p\n",a);
    printf("%p\n",a+1);
    printf("%p\n",&a);
    printf("%p\n",&a+1);
    printf("%p\n",*(&a));
    printf("%p\n",*(&a)+1);
    return 0;
}

 

 

 

int *p = a;*p++ 先取指针p指向的值(数组第一个元素1),再将指针p自增1;        cout << *p++; //  结果为 1        cout <<(*p++);  // 1(*p)++ 先去指针p指向的值(数组第一个元素1),再将该值自增1(数组第一个元素变为2        cout << (*p)++; //  1        cout <<((*p)++)  //2*++p   先将指针p自增1(此时指向数组第二个元素),* 操作再取出该值        cout << *++p; //  2        cout <<(*++p)  //2++*p  先取指针p指向的值(数组第一个元素1),再将该值自增1(数组第一个元素变为2)      cout <<++*p; //   2            cout <<(++*p)  //2注意,上面的每条cout输出,要单独输出才能得到后面的结果。字符串与指针
#include <stdio.h>
int main()
{
    char buffer[10]="ABC";
    char *pc;
    pc="hello";
    printf("%s\n",pc);
    pc++;
    printf("%s\n",pc);
    printf("%c\n",*pc);
    pc=buffer;
    printf("%s\n",pc);
    return 0;
 } 

 

 

#include <stdio.h>
int main()
{
    int a[4]={1,3,5,7};
    printf("%p\n",a);
    printf("%p\n",a+1);
    printf("%p\n",&a);
    printf("%p\n",&a+1);
    printf("%p\n",*(&a));
    printf("%p\n",*(&a)+1);
    return 0;
}

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!