C语言中如何理解指针类型的变量?

 由下例可知不管指针变量所指向的数据类型是什么,用来存地址的指针变量总是8个字节宽。
 指针变量的作用与普通变量的区别就是它用来保存地址型数据(此例中的000000000062FE0F为字符c地址值的16进制表示)。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    char c;
    char *pc;
    c='e';
    pc=&c;  //把c变量的地址取到并存储到pc变量中。
    printf("字符指针类型宽度为%d字节\n",sizeof(pc));  //sizeof(char *)也一样 
    printf("c变量的地址为:\n"); 
    printf("%016X\n",pc);  //这里pc用&c也一样   %016X指的是左补零,输出16个16进制数 
    printf("%p\n",pc);   //%p为指针型数据格式 
    printf("该地址指向的单元存储的字符为:%c\n",*pc);   

    int i;
    int *pi;
    pi=&i;  //把i变量的地址取到并存储到pi变量中。 
    i=12;
    printf("整型指针宽度一样为%d字节\n",sizeof(pi));
    printf("i变量的地址为:\n");
    printf("%016X\n",pi);  //这里pi用&i也一样   
    printf("%p\n",pi);

    unsigned char *p;
    p=&pi;
    i=0;
    while(i<8)
    {
        printf("%02X\n",*(p++));    //输出pi变量各字节的值 
        i++; 
    }   
    return 0; 
}
//以上程序输出内容如下(每次程序运行所输出的地址值可能不同):
/*
字符指针类型宽度为8字节
c变量的地址为:
000000000062FE0F
000000000062FE0F
该地址指向的单元存储的字符为:e
整型指针宽度一样为8字节
i变量的地址为:
000000000062FE0B
000000000062FE0B
0B
FE
62
00
00
00
00
00
*/

image.png

标签: C程序设计, 变量, 指针

评论已关闭