C指针操作(二)

来源:互联网 发布:淘宝代销能刷单吗 编辑:程序博客网 时间:2024/05/22 06:46
#include <iostream>#include<stdio.h>using namespace std;int main(){    char a[20]="You_are_a_girl";    char *p=a;    char **ptr=&p;    printf("p=%d\n",p);    printf("&p=%d\n",&p);    printf("*p=%c\n",*p);    printf("ptr=%d\n",ptr);    printf("&ptr=%d\n",&ptr);    printf("*ptr=%d\n",*ptr);    printf("&*ptr=%d\n",&*ptr);    printf("**ptr=%c\n",**ptr);    cout<<p<<endl;    cout<<&p<<endl;    cout<<*p<<endl;}
p=7012076       &p=7012072      *p=Yptr=7012072     &ptr=7012068    *ptr=7012076    &*ptr=7012072   **ptr=YYou_are_a_girl  0x6afee8        YProcess returned 0 (0x0)   execution time : 0.013 sPress any key to continue.

还是分析那四个元素,注意指针类型跟指针所指元素类型的区别

运算符&和*
&:原有类型加个:*
*:原有类型减个:*

int a=12;   int b;  int *p;     int **ptr;p=&a;       //&a 的结果是一个指针类型是 int*,指向的类型是            //int,指向的地址是a的地址。*p=24;      //*p 的结果,在这里它的类型是 int,它所占用的地址是            //p 所指向的地址, 显然,  *p 就是变量 a。ptr=&p;     //&p 的结果是个指针,该指针的类型是 p 的类型加个*,            //在这里是 int **。该指针所指向的类型是 p 的类型, 这            //里是 int*。 该指针所指向的地址就是指针 p 自己的地址。*ptr=&b;    //*ptr 是个指针, &b 的结果也是个指针,且这两个指针            //的类型和所指向的类型是一样的,所以用&b 来给*ptr 赋            //值就是毫无问题的了。**ptr=34;   //*ptr 的结果是 ptr 所指向的东西,在这里是一个指针,            //对这个指针再做一次*运算,结果是一个 int 类型的变量。
原创粉丝点击