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字節

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章