指针的简单介绍

文章目录


前言

通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。指针是C语言中的一个重要概念及其特点,也是掌握c语言比较困难的部分。


一、什么是指针

定义:指针也就是内存地址。指针变量是用来存放内存地址的变量,

(内存地址:是一种用于软件及硬件等不同层级中的数据概念,用来访问电脑主存中的数据。)

在同一CPU构架下,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。

数据类型符 *指针变量名[=初始地址值]

1. “*” 表示定义的是一个指针变量,指针变量的前面必须有 “*” 号;

2. 在定义指针变量的同时也可以定义普通变量或数组等其它变量;

3. “数据类型符” 是指针变量所指向变量的数据类型,可以是任何基本数据类型,也可以是其他数据类型;

4. “初始地址值” 通常是 “&变量名” “&数组元素” 或 “一维数组名”,这里的变量或数组必须是已定义的;

5. 在定义指针变量时,可以只给部分指针变量赋初值;

6. 指针变量的初始化,除了可以是已定义变量的地址,也可以是已初始化的同类型的指针变量,也可以是NULL(空指针);

0154316903dd42fcb098b8e99c82a8ba.png
 


 

二、为什么要使用指针

在C语言中,指针的使用非常广泛,因为使用指针往往可以生成更高效、更紧凑的代码。总的来说,使用指针有如下好处:

1)指针的使用使得不同区域的代码可以轻易的共享内存数据,这样可以使程序更为快速高效;

2)C语言中一些复杂的数据结构往往需要使用指针来构建,如链表、二叉树等;

3)C语言是传值调用,而有些操作传值调用是无法完成的,如通过被调函数修改调用函数的对            象,但是这种操作可以由指针来完成,而且并不违背传值调用。

4)函数返回多个值,某些值就只能通过指针返回,传入的参数实际上是需要保存带回的结果的变        量


三、指针的简单应用

指针数组

指针数组是一个普通的数组,数组中的每个元素都是指针指针数组的定义为:类型 *p数组  

例如:

#include <stdio.h>

int main()
{
    int a[5] = {1,2,3,4,5};
    int i = 0;
    int *p[5];
    for (i = 0; i < 5; i++) 
    {
        p[i] = &a[i];
    }

    printf("a[3]:%d\n", *(p[3]));
    printf("a[3]:%d\n",*(*(p + 3)));
    return 0;
}

指针函数

在函数里面使用指针,例如之前不能实现的交换函数可以用指针来实现

虚假的交换函数

​
#include"stdio.h"
void swap(int a, int b);

int main()
{
	int a = 6, b = 7;
	swap(a, b);
	printf("a=%d , b=%d", a, b);
	return 0;
}

void swap(int a, int b)
{
	int t = a;
	a = b;
	b = t;
}

​

真正的交换函数 

#include<stdio.h>
void swap(int *pa,int *pb);
int main(void)
{
    int a = 5;
    int b = 6;  
    printf("a=%d b=%d",a,b);
    return 0;
}

void swap(int *pa,int *pb)
{
    int t = *pa;
    *pa = *pb;
    *pb = t;
}

总结

指针是c语言中的一个重要概念,也是C语言的一个重要的特色,正确而灵活地运用它,可以使程序简洁,紧凑,高效,每一个学习和使用c语言的人,都应当深入了解地学习和掌握指针,可以说,不掌握指针就是没有掌握C的精华

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值