BSP学习Day15 C语言基础 数组相关题目练习 指针

指针

1. 概念 

学习 C 语言的指针既简单又有趣。通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,想要成为一名优秀的 C 程序员,学习指针是很有必要的。

正如您所知道的,每一个变量都有一个内存位置,每一个内存位置都定义了可使用 & 运算符访问的地址,它表示了在内存中的一个地址。


#include <stdio.h>
 
int main ()
{
    int var_runoob = 10;
    int *p;              // 定义指针变量
    p = &var_runoob;
 
   printf("var_runoob 变量的地址: %p\n", p);
   return 0;
}

运行结果如下

var_runoob 变量的地址: 0x7ffeeaae08d8

地址:操作系统的寻址空间编号,也就是操作系统给每个存储单元分配了统一的编号

指针就是地址

指针变量就是保存地址编号的变量

32bit平台下,地址总线32位,所以地址编号32位编号,指针变量就是32位即4字节


2. 指针的定义方法

1.指针的定义:

        数据类型 *指针变量名;

        数据类型 *指针变量名1,*指针变量名2,*指针变量名3,...;

*号在指针变量定义时不能省略,否则就会变成一般变量的定义

2.指针的运算符

&:获取一个变量的地址

*:在定义一个指针变量时,起到表示作用,表示定义的是一个指针变量,除此之外其它地方都表示获取一个指针变量保存的地址里面的内容

  • 扩展:如果一行中定义多个指针变量的前面都需要加*修饰

    int a = 10;
    int *p;//定义一个int型指针变量
    p = &a;  //int指针变量p指向 int型变量a的地址

    int *p1,*p2,*p2; //指针的定义,定义三个int型指针变量 
    int *pa = NULL; //空指针
    int *pb; //野指针 
    void *pd;//万能指针,这个指针可以指向任意数据类型的地址 


3. 指针的引用 

指针变量中只能存放地址,与指针相关的两个运算符时&(取地址运算)和*(指针运算)

	int a = 10;
	int *p;//定义一个int型指针变量
	p = &a;  //int指针变量p指向 int型变量a的地址
	
//	*p = *&a  = a
//	*&p = p = &a = &*p;
//	&*p = &a = p
		
	printf("%d\n",a); //打印变量a的值 
	printf("%p\n",&a);//打印a的地址 
	printf("%d\n",*&a);//对a取地址再取值,还是a自己 
	printf("%p\n",p); //指针变量p,也是变量a的地址 
	printf("%p\n",*&p);//取地址的地址,再取值,还是地址本身 
	printf("%d\n",*p);//取地址里面的值 
	printf("%p\n",&*p);//取地址里面的值,再取这个值的地址,还是地址本身 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

慕容离875

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

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

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

打赏作者

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

抵扣说明:

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

余额充值