指针

本文详细介绍了C语言中的指针概念,包括指针的定义、类型、解引用、指针运算(如指针加减整数、指针关系运算)以及野指针问题。指针类型决定了指针移动的步长,而指针运算则涉及到内存地址的增减。此外,野指针是未初始化或已释放内存的指针,使用时可能导致程序崩溃,需避免。
摘要由CSDN通过智能技术生成

指针是什么?

总结:指针就是个变量,变量里面是地址,指针就是地址。(存放在指针的值都被当成地址处理)。

:指针的大小在32位平台是4个字节,在64位平台是8个字节。

指针和指针类型

通过前面的知识我们知道,变量有不同的类型,如:整形,浮点型等。
同理:指针也有不同的类型。

**指针的定义方式:

变量类型 + *

比如:

int * pi=NULL
char * pc=NULL
short * ps=NULL
long *pl=NULL
float *pf=NULL
double *pd=NULL

指针类型的意义?

指针±整数

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int n = 10;
	char *pc = (char*)&n;
	int *pi = &n;
	printf("n=%p\n", &n);
	printf("pc=%p\n", pc);
	printf("pi=%p\n", pi);
	printf("pc+1=%p\n", pc + 1);
	printf("pi+1=%p\n", pi + 1);
	return 0;
}

总结:指针的类型决定了指针向前或者向后走一步有多大(距离)。

指针的解引用

在这里插入代码片

野指针

参考博客:
https://blog.csdn.net/qq_52988578/article/details/114435709

指针运算

  • 指针±整数
  • 指针-指针
  • 指针的关系运算

:指针相减前提,指向的地址相等

指针±整数

#define MAX 5
int arr[5];
int *p;
//指针+-整数
for(p=&arr[0] ;p<&a[MAX]; )
{
     *p++ =0;
} 

指针-指针

int my_strlen(char *s)//没有指针减指针
{
	char *p = s;
	while (*p != '\0')
		p++;
	return p - s;
} 

指针的关系运算

for (p = &arr[MAX]; p > &arr[0])
{
	*--p;
}

标准规定:允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与指向第一个元素之前的那个内存位置的指针进行比较。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

伦敦看日出

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

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

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

打赏作者

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

抵扣说明:

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

余额充值