A. 指针存储的地址如何输出
这样可以得出p的地址:
#include <stdio.h>
#include <iostream>
using namespace std;
int main ( int argc, char *argv[] )
{
int a=10,*p=&a;
int **ph=&p;
cout<<"p的地址为:"<<p<<endl;
//printf ( "*ph=%x,&p=%x,p=%x,p=%p,&a=%x,ap=%p,*p=%d\n",*ph,&p,p,p,&a,a,*p );
return 0;
}
B. c语言指针输出地址,内容和字节数
#include<stdio.h>
void main() { int a,*p;
p=&a; a=5;
printf("指针地址:%x\n",p);
printf("指针指向内容:%d\n",*p);
printf("指针变量字节数:%d\n",sizeof(p));
}
C. C语言 如何输出指针所指向空间的大小
C语言无法输出指针所指向的空间的大小!
一般,我们获取一个变量所占内存空间的方法为:sizeof(变量名或类型名),如:
int a;
int aa[10];
int *p=aa;
printf("sizeof(int)=%d\n", sizeof(int) ); //现在的机器一般为32位或64位机,int类型占四个字节,所以输出4
printf("sizeof( a )=%d\n", sizeof(a) ); //输出4
printf("sizeof( aa )=%d\n", sizeof(aa) ); //输出4*10=40
printf("sizeof(p)=%d\n", sizeof(p) );//输出4 ?见下面说明
printf("sizeof(int *)=%d\n", sizeof(int *) );//输出4 ?见下面说明指针变量定义:用来存储内存地址的变量。指针变量中存储的是内存地址数据(一个整型数),而不是真正的数据,真正的数据是在地址中存放的。所以,指针变量实际上就是个整型变量,用sizeof命令去获取任意类型的指针变量都会得到4。
指针变量存储的是一个存储空间的首地址,究竟这个空间有多大,可以存储多少个数据,这是分配空间时所决定的。单独看一个地址值,是看不出其空间大小的。如:
int
a;
int
aa[10];
int
*p
;
//定义一个指针变量
p=aa
;
//指向数组aa,aa的数据空间是40字节,10个整数
p=&a;
//指向一个整型变量,它的存储空间是4字节,一个整数