C语言基础 -33 指针_指针与变量的关系

变量i,值为1,存放值1的地址为0x2000

地址:房间, 内容:key

P存放的内容是i的地址,及p - &i

&p:指针p的地址为0x3000

p的内容,*p,指向地址0x2000里面的内容,即1

book@100ask:~/C_coding/CH01$ cat pointer.c
#include <stdio.h>
#include <stdlib.h>

int main()
{
	int i = 1;
	int *p;
	p = &i;

	printf("i = %d\n",i);
	printf("&i = %p\n",&i);
	printf("p = %p\n",p);
	printf("&p = %p\n",&p);
	printf("*p = %d\n",*p);
	
	exit(0);
}


book@100ask:~/C_coding/CH01$ make pointer
cc     pointer.c   -o pointer
book@100ask:~/C_coding/CH01$ ./pointer
i = 1
&i = 0x7ffd9943dbdc
p = 0x7ffd9943dbdc
&p = 0x7ffd9943dbe0
*p = 1
book@100ask:~/C_coding/CH01$ cat pointer2.c
#include <stdio.h>
#include <stdlib.h>

int main()
{
	int i = 1;
	int *p;
	p = &i;

	printf("%d\n",sizeof(i));    //int型变量占用4字节
	printf("%d\n",sizeof(p));    //指针型变量占用8字节,由于是64位计算机,因此8字节

	printf("i = %d\n",i);
	printf("&i = %p\n",&i);
	printf("p = %p\n",p);
	printf("&p = %p\n",&p);
	printf("*p = %d\n",*p);
	
	exit(0);
}


book@100ask:~/C_coding/CH01$ ./pointer2
4
8
i = 1
&i = 0x7ffcb56394fc
p = 0x7ffcb56394fc
&p = 0x7ffcb5639500
*p = 1
book@100ask:~/C_coding/CH01$ cat pointer1.c
#include <stdio.h>
#include <stdlib.h>

int main()
{
	int i = 1;
	int *p;
	double *d;
	float *q;
	char *c;

	
	printf("%d\n",sizeof(p));	
	printf("%d\n",sizeof(d));	
	printf("%d\n",sizeof(q));	
	printf("%d\n",sizeof(c));	

}

./pointer1
8
8
8
8

由于是64位计算机,不同类型的指针变量,均占用8字节

猜你喜欢

转载自blog.csdn.net/f2157120/article/details/106843859
今日推荐