欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Pointer_4

程序员文章站 2022-06-23 13:36:49
...
#include <stdio.h>
#include <stdlib.h>     // for system("pause");

int main()
{
    char a[20] = "You_are_a_girl";
    char *p = a;
    char **ptr = &p;
    printf("p = %d\n", p);          // 输出地址的10进制表示
    printf("p = %p\n", p);          // 输出地址的16进制表示
    printf("*p = %d\n", *p);        // Y的ASCII码
    printf("\n");

    printf("ptr = %d\n", ptr);      // 地址的10进制表示
    printf("ptr = %p\n", ptr);      // 地址的16进制表示
    printf("*ptr = %d\n", *ptr);    // 地址的10进制表示
    printf("*ptr = %p\n", *ptr);    // 地址的16进制表示
    printf("**ptr = %c\n", **ptr);  // 输出里面的值
    printf("\n");

    // ptr的类型是char**,指向的类型是char*类型,该指向的地址就是p的地址(&p)
    // 当执行ptr++时,会使指针加一个sizeof(char*),即&p+4; p的类型是char*,
    // 指向的类型是char,p所表示的只是a数组的首地址,在内存中用4个字节存放
    // 所以&p+4,指向不知道,最后输出的会是一个随机值,或许是一个非法操作
    ptr++;
    printf("ptr = %d\n", ptr);
    printf("ptr = %p\n", ptr);
    printf("*ptr = %d\n", *ptr);
    printf("*ptr = %p\n", *ptr);

    getchar();
    system("pause");
    return 0;
}
相关标签: pointer

推荐阅读