C语言笔记之指针(一)

一.指针含义

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

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

#include <stdio.h>

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);
}

测试结果

二.指针用法

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 <stdio.h>

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;
}

测试结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kk_阿白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值