C语言 --- 指针
创始人
2024-11-05 01:39:32

目录

1.  概念

2. 指针变量初始化

2.1 被调修改主调 

2.2 指针变量的引用

3. 指针 + 一维整型数组

3.1 指针的运算


1.  概念

指针就是地址  ---  内存单元的编号

指针也是一种数据类型 --- 这种数据类型专门用来处理地址这种数据

语法:

基类型 * 指针变量名

(1)基类型:就是结构体类型,表示该指针所指向的内存空间存放什么类型的数据

(2)*  :表示此时定义的是一个 指针类型 的变量

(3)指针变量名:符合标识符命名规则

2. 指针变量初始化

如果指针变量没有初始化,此时是随机值。---- 野指针

初始化可以让指针变量有明确指向。

赋值:

int a = 10; int *p; p = &a;    // p指向a,因为p中保存了a的地址  int *p = NULL;   // NULL 0号地址---空指针   int *p,q;  // p是指针类型,q是int型  int *p,*q  // 此时表示定义了两个int*类型的变量p,q

2.1 被调修改主调 

(1)指针作为函数参数

形参  ---  指针类型变量,用来接收实参

实参  ---  要修改谁就把谁的地址传过去 要保证空间有效

注:被调函数中必须要有 *p 运算

(2)值传递和地址传递

值传递 --- 只是实参数据赋值了形参

地址(指针)传递 --- 传的是地址 -- 可以实现被调修改主调

eg:实现两个数求和,通过参数带出来

#include  void  ADD(int a,int b,int *sum) {     *sum = a+b; }  int main(void) {     int x=10;     int y=2;     int sum;     ADD(x,y,&sum);     printf("%d\n",sum);     return 0; }

2.2 指针变量的引用

*p   --- 表示访问p所指向的基类型的内存空间

(1)间接访问

(2)通过a访问 --- 直接访问

step1: 首先拿出p中地址,到内存中定位 
step2: 偏移出sizeof(基类型)大小的一块空间 
step3: 将偏移出的这块空间,当做一个基类型变量来看 

3. 指针 + 一维整型数组

数组名就是数组首元素的地址。

数组名是个常量,不能做自增自减运算。

int *p = a;            //p 指向了数组a。 a <=> &a[0]  void printArray(int *a,int len)   // 数组作为函数参数,实参传数组名

3.1 指针的运算

p+1   加n  表示跳过n个基类型

p-1 

p++

p--

不能运算p+q

p - q 表示差了多少个元素(基类型)必须是同一类型的指针

*(p+i)<=> a[ i ] <=>*(a+i)

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...