c语言之指针基础概念

本文深入解析指针概念,包括其在32位与64位系统中的大小,大小端存储方式,定义与赋值规则,解引用操作,以及与数组、函数、常量之间的关系。同时探讨了指针在不同场景下的应用,如指针算术、指针比较及指针类型转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指针:是一种数据类型,简单来说就是是个变量,存放内存单元的地址。也就是说它能找到以它为地址的内存单元。
32位系统:任何类型的指针大小都为4个字节(因为内存 32/8 = 4)
64位系统:任何类型的指针大小都为8个字节(因为内存 64/8 = 8)
大小端

  1. 大端:低地址存放高数据
  2. 小端:低地址存放低地址

定义指针int *p = NULL;此时的 * 是和数据类型连接在一起为了说明p为一个int的指针。
定义指针必须赋值:指针变量同普通变量一样,使用之前不仅要定义说明, 而且必须赋予具体的值。未经 赋值的指针变量不能使用, 否则将造成系统混乱,甚至死机
解引用*p = &a;此时的 * 是一个操作符(解引用);指针的类型决定了,对指针解引用的时候有多大的权限(能操作几个字节)。 比如: char* 的指针解引用就 只能访问一个字节,而 int* 的指针的解引用就能访问四个字节。

**void ***:它可以接受任何类型地址,但不能进行解引用,因为void没有具体大小
指针±整数:指针向前或向后;指针的类型决定指针向前或向后一步有多大
指针-指针:两个指针必须指向同一块内存,结果为相差中间数据的个数
指针的关系运算:允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与指向第一个 元素之前的那个内存位置的指针进行比较
指针和数组

  • 数组名表示的是元素首元素的地址
  • &数组名表示整个数组的地址
  • sizeof(arr)–>整个数组的字节大小
    数组指针:指向数组的指针

    指针数组:存放指针的数组

    指向常量的指针
    指针可以改变,但是不可以通过解引用改变指针指向的值;
int a= 10;
const int * p =&a;
p//可以改变
*p//不可以变

常量指针
指针本身不可以改变,但是指针指向的值可以改变

int a= 10;
 int * const p =&a;
p//不可以改变
*p//可以改变

提问:那const int const p;中p与p可以修改吗?
答:都不可以修改
指针函数:返回值为指针类型的函数;
注意:不要返回局部变量的指针

 char *getWord(char c);  //这个函数的声明;

函数指针:指向函数的指针

int f(int a)
{
	return a*a;
}
int (*p)(int) = f ;
int  (*p1)(int) = &f;//两者相等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值