C语言笔记之指针

一.指针含义

1.a、*a与&a的区别

a存储指向变量的地址,*a为指针的值,&a为指针的地址

#include 

int main(){
	/** 测试代码部分一 **/
	int a1=2;
	
	int *b1;
	
	b1=&a1;
	
	printf(" a1 = %d, &a1 = %d, b1 = %d, *b1 = %d, &b1 = %d\n\n",a1,&a1,b1,*b1,&b1);
	
	/** 测试代码部分二 **/
	
	int *a2;
	
	a2=&a2;
	
	printf(" a2 = %d, *a2 = %d, &a2 = %d\n\n",a2,*a2,&a2);
}

C语言笔记之指针_第1张图片

二.指针用法

1.直接赋值方式

int *a = &value;

2.先定义后赋值

int *b;
b = &value;

3.分配内存后赋值

int *c = (int *)malloc(sizeof(int) * 1);
*c = value;

4.先定义、分配内存,最后赋值

int *d;
d = (int *)malloc(sizeof(int) * 1);
*d = value;
#include 

int main()
{
	/** 目标测试变量 **/
	int value = 42;

	/** 直接将指针赋值为变量的地址 **/
	int *a = &value;

	/** 先定义指针,再将地址赋值给指针 **/
	int *b;

	b=&value;// X 错误的写法--> *b=value;

	/** 先给指针分配好内存,然后赋值 **/
	int *c=(int *)malloc(sizeof(int)*1);

	*c=value; // √其他写法--> c=&value;

	/** 先定义指针.再分配内存,最后赋值 **/
	int *d;

	d = (int*)malloc(sizeof(int)*1);// X 错误的写法--> *d=(int*)malloc(sizeof(int)*1);

	*d=value;

	/** 各种情况的结果 **/
	printf("---------value初始值为%d,地址为%d---------\n\n",value,&value);
	
	/** a :42, &a :6487704, sizeof(a):4 **/
	printf("a 的值:%d, a 的地址为%d, a 所占的内存为%d\n\n", *a,&a,sizeof(a));

	/** b :42, &b :6487700, sizeof(b):4 **/
	printf("b 的值:%d, b 的地址为%d, b 所占的内存为%d\n\n", *b,&b,sizeof(b));

	/** c :42, &c :6487696, sizeof(c):4 **/
	printf("c 的值:%d, c 的地址为%d, c 所占的内存为%d\n\n", *c,&c,sizeof(c));

	/** d :42, &d :6487692, sizeof(d):4 **/
	printf("d 的值:%d, d 的地址为%d, d 所占的内存为%d\n\n", *d,&d,sizeof(d));

	/**对value的值进行加1**/
	value++;

	/** 观察value值增加后的变化 **/
	printf("---------在对value值进行加1后,各值的变化---------\n\n");

	/** a :43, &a :6487704, sizeof(a):4 **/
	printf("a 的值:%d, a 的地址为%d, a 所占的内存为%d\n\n", *a,&a,sizeof(a));

	/** b :43, &b :6487700, sizeof(b):4 **/
	printf("b 的值:%d, b 的地址为%d, b 所占的内存为%d\n\n", *b,&b,sizeof(b));

	/** c :42, &c :6487696, sizeof(c):4 **/
	printf("c 的值:%d, c 的地址为%d, c 所占的内存为%d\n\n", *c,&c,sizeof(c));

	/** d :42, &d :6487692, sizeof(d):4 **/
	printf("d 的值:%d, d 的地址为%d, d 所占的内存为%d\n", *d,&d,sizeof(d));

	return 0;
}

C语言笔记之指针_第2张图片

你可能感兴趣的:(c语言,笔记,开发语言,数据结构)