关于指针的笔记(1)--C语言笔记


前言

到目前为止我们看到的数据类型,包括原始数据类型和派生数据类型,都用于描述大小和形状事先已知的数据或数据结构。

然而,有许多程序的数据结构在程序的整个生命周期中的形状和大小可能会发生变化。

我们看到的所有数据类型的变量都是静态变量,因为它们是在程序中声明的,由声明的标识符指定,并且在编译时为它们保留内存空间。

变量的内容在程序执行过程中可能会发生变化,但为该变量预留的内存大小不会发生变化。

但是,C语言允许在运行时创建或销毁变量,因为在程序执行期间需要它们。

由于这些变量没有在程序中声明,所以没有命名,称为匿名变量。 如果一种语言允许创建匿名变量,那么它还必须提供一种引用这些变量的方法,以便可以为它们赋值。 同样,您必须提供一种访问它们的方法。

为此,C语言提供了指针类型。

指针类型和声明为指针类型的变量的行为与其他的变量不同。 直到现在,当我们声明一个特定类型的变量时,该变量可以直接包含该类型的值。 对于指针类型,情况却并非如此。


一、指针的概念

指针是一个变量,其值是另一个变量的内存地址。因此,简单来说,指针就是地址。

在这里插入图片描述
在这里插入图片描述
指针变量的声明形式:
<数据类型> *<标识符>;

int *entero;
entero是指向整数类型变量的变量指针

char *caracter;
caracter是指向字符类型变量的变量指针


二、指针的运算符与类型

1. 运算符 * & 和内存地址

指针的声明与其余变量相同,但在标识之前使用间接运算符 (*),目的是指向一个变量。

在这里插入图片描述

每个内存空间都有一个地址来标识它。

可以使用 & 运算符获取内存地址,后跟变量名。返回变量的地址,将给出变量的实际地址。

请看代码:

int main()
{
	int a = 5;
	printf("Direccion de a: %p\n", &a);
} 

在这里插入图片描述

2. 指针的类型

指针的类型大小(字节) 1指针指向的类型大小(字节)2使用示例
int4int *4int *a, *b, *c;
unsigned int4unsigned int *4unsigned int *d, *e, *f;
short int2short int *4short int *g, *h, *i;
unsigned short int2unsigned short int *4usigned short int *j, *k, *l;
long int4long int *4long int *m, *n, *o;
unsigned long int4unsigned long int *4usigned long int *p, *q, *r;
char1char *4char *s, *t;
unsigned char1unsigned char *4unsigned char *u, *v;
float4float *4float *w, *x;
double8double *4double *y, *z;
long double8long double *4long double *a1, *a2;

三、指针的示例

下面请看两个指针的例子

例一:

int main()
{
	float altura = 50.35; // 创建一个高度变量
	float *apunta; // 创建一个指针
	apunta = &altura; // 指针初始化
	printf("\n%.2f", altura); // 打印变量高度的值
	printf("\n%.2f", *apunta); // 打印包含指针地址的值
	*apunta = 60.80; // 修改指针的值
	printf("\nContenido = %.2f", *apunta);// 打印修改后指针地址的值
}

在这里插入图片描述

例二:

int main()
{
	int *apunt1, *apunt2, *apunt3;
	int valor1, valor2, valor3;
	// 输入第一个值 
	printf("Indica el valor 1:\n");
	scanf("%d", &valor1);
	// 输入第二个值
	printf("Indica el valor 2:\n");   
	scanf("%d", &valor2); 
	apunt1 = &valor1;
	apunt2 = &valor2;
	apunt3 = &valor3;
	// 两个指针相加
	*apunt3 = *apunt1 + *apunt2;
	printf("La suma de valor 1 y valor 2 es: %d\n", valor3); 
	return 0;
}

在这里插入图片描述


  1. 参考值,可能因不同平台而异。 ↩︎

  2. 指针在32位机器下是4个字节,在64位机器下是8个字节。 ↩︎

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

流年梦红尘

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

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

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

打赏作者

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

抵扣说明:

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

余额充值