C语言中如何理解指针类型的变量?
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=π
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
*/
评论已关闭