C for ios ---指针

iOS-野指针定位 野指针 当所指向的对象被释放或者收回,但是对该指针没有作任何的修改,以至于该指针仍旧指向已经回收的内存地址,此情况下该指针便称野指针 野指针异常堪称crash界的半壁江山,相比起NSException而言,野指针有这么两个特点…… 阅读详情

指针

什么是指针

  • 在计算机中所有数据都存储在内存单元中,而每个内存单元都有一个对应的地址, 只要通过这个地址就能找到对应单元中存储的数据. 由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”

  • 内存单元的指针(地址)和内存单元的内容是两个不同的概念。

指针变量

什么是指针变量

  • 在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是
    某个内存单元的地址或称为某内存单元的指针。
  • 严格意义上说,指针是一个地址,是一个常量
  • 针变量是存放一个地址,是一个变量。

定义指针变量

  • 格式
    • 数据类型 * 变量名称
    • 数据类型:说明将来指针变量能够保存什么类型的变量的地址
      • 仅仅为了标识这是指针变量
    • 只要一个指针变量保存了一个变量的地址,那么我们就说这个指针变量指向了那个变量
    int number = 10;
    //定义指针变量
    //表示将number的地址存储到num指针变量中
    int *num = &number;
  • 内存
    • 指针在64位的编译器中占8个字节的内存空间
    • 指针变量前用* 代表访问指针变量指向的那一块存储空间
    int number = 10;
    //定义指针变量
    //表示将number的地址存储到num指针变量中
    int *p = &number;
    //访问指针P所指向的内存空间
    *p = 5;
    printf("%i",number);
  • 通过指针操作一个变量的值

#include <stdio.h>
void change(int*);
int main(int argc, const char * argv[]) {
    /*
    int number = 10;
    //定义指针变量
    //表示将number的地址存储到num指针变量中
    int *p = &number;
    //访问指针P所指向的内存空间
    *p = 5;
    printf("%i",number);
     */
    int number = 5;
    change(&number);
    printf("%i",number);
    return 0;
}

void change(int *p){
    *p = 20;
}
  • 通过指针交换两个变量的值
#include <stdio.h>
void changeNumber(int*,int*);
int main(int argc, const char * argv[]) {


    int a = 10;
    int b = 5;

    changeNumber(&a, &b);

    printf("a = %i,b= %i\n",a,b);

    return 0;
}


void changeNumber(int* v1,int* v2){
    int temp = *v1;
    *v1 = *v2;
    *v2 = temp;
}
  • 通过操作指针同时处理多个变量
#include <stdio.h>
int calculate(int,int,int,int*,int*);
int main(int argc, const char * argv[]) {

    int a = 10;
    int b = 20;
    int c = 30;

    //求和
    int sum =0;
    int dValue = 0;
    int average =calculate(a, b, c, &sum, &dValue);
    printf("求和 %i,求差 %i,平均值 %i\n",sum,dValue,average);
    return 0;
}

int calculate(int v1,int v2,int v3,int* p1,int* p2){

    //定义p1指向的内存空间
    *p1 = v1+v2+v3;
    //操作p2指向的内存空间
    *p2 = v1-v2-v3;
    //返回平均值
    return (v1+v2+v3)/3;
}

指针注意点

  • 指针只能保存地址
  • 同一个变量可以有多个指针指向它
  • 指针的指向可以修改
  • 不要访问空指针或者野指针

多级指针

  • 多级指针代表指向指针的指针
  • 多级指针为多个指针的嵌套
~~     char c = 'a';
~~     char *cp;
~~     cp = &c;
~~     char **cp2;
~~     cp2 = &cp;
~~     printf("c = %c", **cp2);

指针类型

1.指针为什么要区分类型

  • 在同一种编译器环境下,一个指针变量所占用的内存空间是固定的。比如,在16位编译器环境 下,任何一个指针变量都只占用8个字节,并不会随所指向变量的类型而改变。

  • 虽然所有的指针都只占8个字节,但不同类型的变量却占不同的字节数。

    • 一个int占用4个字节,一个char占用1个字节,而一个double占用8字节;
    • 现在只有一个地址,我怎么才能知道要从这个地址开始向后访问多少个字节的存储空间呢,是4个,是1个,还是8个。
    • 所以指针变量需要它所指向的数据类型告诉它要访问多少个字节存储空间
  • 当我们利用指针去取值的时候,系统就会自动根据指针的类型来确定应该取多少个字节中的值
  • 通俗点说就是指针类型取值的时候需要通过指针类型取值的时候去指定指针取多少值,如果指针类型不匹配就会产生取值的错误。
IOS成长中 C语言之函数指针 知识点概括:                  1. 阅读详情

相关推荐

iOS 野指针定位:野指针嗅探器

一. 前言 最近最近被指派去解决一些线上的崩溃问题,经常遇到野指针导致的崩溃。相对于其他的原因引起的崩溃来说,野指针导致崩溃是最难定位的,这里主要总结了两种思路来定位野指针导致的崩溃。 二. 野指针 1.定义 当所指向的对象被释放或者收回,但是对该指针没有作任何的修改,以至于该指针仍旧指向已经回收的内存地址,此情况下该指针便称野指针. 2. 为什么Obj-C野指针的Crash那么多?...

马甲包开发审核交流群:869685378 1945

ios从入门到放弃之C基础巩固-----多级指针、指针数组、函数指针

继续接着上一次的ios从入门到放弃之C基础巩固-----数组、字符串C基础往下学习,这次是C中的最后一块内容了----指针,争取用一二篇收尾了,然后赶紧进入OC的学习,不然感觉学了这么久,还是没有沾到IOS开发的边~~当然关于C的指针的内容也不少,最重要也最难,所以过好这一关也是很有必要的。 指针变量-基本概念: 关于指针变量是啥这里就不过多说明了,只要学过C的基本都有接触过,其实就是用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针,而该指.

webor2006的博客 319

【IOS 开发学习总结-OC-7.11-★】 objective-c——指针数组和指向指针的指针

指针数组与 main() 函数形参有时需要一次声明具有多个相同特征的指针变量,此时可借助,指针数组来实现。指针数组使用最多的地方是处理字符串数组的情况,由于字符串本身需要使用 char * 型指针变量来表示,当程序中有多个字符串要保存时,就可以借助指针数组。声明指针数组与声明普通数组的语法类型:语法格式:类型* 数组变量[长度]; 注意与类型 (*变量名)[长度];的语法格式相区分。 区别在于:

Albert的专栏 3197

iOS开发分分钟搞定C语言—— 字符串和指针

指针

IOS_龙的博客 1656

【IOS 开发学习总结-OC-7.7-★★】 objective-c——指针

指针是 C 语言的一个重要概念。OC 系统类型的变量,自定义类型的变量都是指针。指针的概念定义一个变量后,程序运行过程中,该变量保存在内存中,那要使用该变量的值有这样2种方法: 1.通过变量来访问它的值。——直接访问 2.到该变量的存储位置去取它的值。——间接访问操作系统会为每个内存单元进行编号,这个编号就是内存单元的地址。指针也就是指这些单元的内存地址。简单的说,变量的内存地址就是该变量的指针

Albert的专栏 2832

iOS之深入解析野指针检测的原理及实现

一、异常 ① 概念 异常大致可以分为两类: 软件异常:主要是来自 kill(),pthread_kill(),iOS 中的 NSException 未捕获,absort 等; 硬件异常:硬件的信号始于处理器 trap,是和平台相关的,野指针崩溃大部分是硬件异常。 处理异常时,如果 Mach 异常,则 Mach 层捕获;如果 UNIX 信号异常,则 BSD 层获取。 iOS 中的 POSIX API 是通过 Mach 之上的 BSD 层实现的,如下图所示: 说明: Mach 是一个受

╰つ栺尖篴夢ゞ 6387

Cocoa 框架 For iOS(一) 框架的介绍,Objectivie-C运行时能力的解析等

Cocoa框架是iOS应用程序的基础,了解Cocoa框架,对开发iOS应用有很大的帮助。1、Cocoa是什么?Cocoa是OS X和 iOS操作系统的程序的运行环境。是什么因素使一个程序成为Cocoa程序呢?不是编程语言,因为在Cocoa开发中你可以使用各种语言;也不是开发工具,你可以在命令行上就可以创建Cocoa程序。Cocoa程序可以这么说,它是由一些对象组成,而这些对象的类最后都是继承于它们

空杯子 7万+

【自动驾驶规划】Lattice Planner

Lattice Planner简介 LatticePlanner算法属于一种局部轨迹规划器,输出轨迹将直接输入到控制器,由控制器完成对局部轨迹的跟踪控制。因此,Lattice Planner输出的轨迹是一条光滑无碰撞满足车辆运动学约束和速度约束的平稳安全的局部轨迹。Lattice Planner的输入端主要由三部分组成,感知及障碍物信息、参考线信息及定位信息。局部规划模块的输出是带有速度信息的一系列轨迹点组成的轨迹,其保证了车辆控制器在车辆跟踪控制过程中的平稳性和安全性。 局部规划模块的输出是带有速

uytguytgf的博客 6491

iOS的空指针和野指针

iOS的空指针和野指针在iOS中我们经常可以遇到空指针和野指针的情况,今天在这里就做一下总结,希望对大家有所帮助,也希望你们给予补充和纠正, 谢谢~~~1.概念 1.1空指针1> 没有存储任何内存地址的指针就称为空指针(NULL指针)。2> 空指针就是被赋值为nil的指针,在没有被具体初始化之前,为nil。1.2野指针“野指针”不是nil指针,是指向”垃圾”内存(不可用内存)的指针。野指针是非常危

QiLong_Shi的博客 1742

峰岹FU6832L双核电机控制芯片实战:从FOC算法到BLDC/PMSM驱动开发

在嵌入式系统和电机控制领域,磁场定向控制(FOC)是实现无刷直流电机(BLDC)和永磁同步电机(PMSM)高效、平稳运行的核心算法。其原理是通过坐标变换将三相交流量分解为直流量,实现类似直流电机的转矩与磁场解耦控制,从而提升效率、降低噪音与振动。这项技术的工程价值在于能以更低的处理器开销实现高性能驱动,广泛应用于消费电子、工业自动化与智能家电。本文以峰岹FU6832L芯片为例,深入解析其独特的双核架构——将实时性要求极高的FOC运算交由专用硬件引擎处理,解放主控CPU处理应用逻辑,并结合PID参数整定、电流

weixin_29570795的博客 511

手把手教你解决Windows 10网络驱动器无法访问问题(附详细排查步骤)

本文详细指导Windows 10用户解决网络驱动器无法访问的常见问题。通过从现象快速定位到系统排查,提供了从检查网络连通性、修复凭据权限到调整高级设置的完整步骤,特别是针对“找不到网络路径”等错误,帮助用户高效恢复对共享资源的访问。

weixin_29233857的博客 517

ios c语言函数调用函数指针,iOS学习之C语言函数指针

通过函数名调用函数:int max = maxValue(4, 5);printf("max = %d\n", max);函数类型:int (int, int)1.定义函数指针int *p = NULL;函数类型:int (int, int)函数指针的类型:int (*)(int, int)p是函数指针变量名int (*p)(int, int) = NULL;2.给函数指针赋值(使用函数首地址)函...

weixin_42439808的博客 429

从零开始:用君正T23ZN打造智能门锁双摄系统(含代码示例与调试技巧)

本文详细介绍了基于君正T23ZN视频处理芯片构建智能门锁双摄系统的完整实战方案。内容涵盖硬件选型与核心电路设计、软件开发环境搭建、双摄驱动框架、图像信号处理(ISP)调优、人脸识别算法集成与性能优化,以及系统调试与稳定性保障。文章提供了丰富的代码示例和调试技巧,旨在帮助嵌入式开发者高效实现具备人脸识别与监控功能的低功耗智能门锁视觉系统。

opencv7vision的博客 716

iOS C语言之指针

概览 指针概念 数组和指针 字符串和指针 函数和指针

LOLITA0164的博客 1万+

用WorkBuddy搭建漫剧AI自动化制作流水线全攻略

在内容创作领域,AI智能体正逐渐从单一工具辅助走向全流程自动化调度。其核心原理是将剧本、分镜、绘图、配音、剪辑等环节拆解为可独立执行的任务单元,由总控系统统一协调,从而大幅降低人力与时间成本。这种模式尤其适用于动态漫画(漫剧)这类环节多、专业度要求高的视频形态。传统制作流程中,角色一致性、配音周期和剪辑返工是公认的效率瓶颈,而借助AI智能体工作台,创作者只需输入故事创意,即可驱动多个数字分身协同完成内容生产。本文以WorkBuddy为例,详细展示如何配置模型、安装技能包并串联五段式流水线,将单集制作成本从万

weixin_28224217的博客 251

Arm CCA架构:硬件级机密计算与安全隔离技术解析

机密计算(Confidential Computing)通过硬件级隔离技术构建可信执行环境(TEE),是当前云安全和数据隐私保护的核心方案。Armv9-A引入的CCA架构采用物理地址空间隔离和Granule保护表(GPT)机制,实现4KB颗粒度的内存访问控制。该技术通过标准化的RMI/RSI接口规范,为虚拟化环境和安全敏感应用提供硬件级保护,特别适用于金融交易、医疗数据处理等需要严格隔离的场景。相比传统TEE方案,Arm CCA在隔离等级和动态权限管理方面具有显著优势,其Realm World设计为机密计算

weixin_30905133的博客 565

ios c语言指针的指针,iOS开发 -- C语言基础10(指针和字符串)

iOS开发 -- C语言基础10(指针和字符串)字符串回顾一个字符串由一个或多个字符组成,因此我们可以用字符数组来存放字符串,不过在数组的尾部要加上一个空字符'\0'。char s[] = "mj";上面的代码定义了一个字符数组s来存储字符串"mj",系统会自动在尾部加上一个空字符'\0'。内存分布大致如下图所示:从上一篇文章《指向一维数组元素的指针》中可以看出指针和数组的关系非常密切,因此我们也...

weixin_39811036的博客 195

uni-app - 刘海屏(Iphone X)底部横杠(——)白色区域块(安全距离处更改颜色)解决方案

场景:因为要做无tabbar页面,所以在配置文件中取消底部导航栏。取消后,iPhoneX(刘海屏)底部就出现如下图所示白色安全区域问题:这个问题,是因为uni-app默认会为iPhoneX(刘海屏)留出安全距离,这个安全距离的背景色就是白色。所以,如果你将页面颜色设置为其他颜色,就会与默认白色冲突。有2个不同的解决方案(原生占位),虽然原理是一样,但使用的场景不同,请根据您的需求来采纳。

🏆 前端领域优质创作者 1万+

iOS概念入门学习-C语言-指针

概述:本文简要介绍了指针的概念、定义方法和简单地应用

cuin123的博客 659

政务帮办新范式:基于检索增强与多智能体协同的智能系统实践

本文提出了一种多智能体协同的智能政务系统架构,突破传统方案在状态管理、职责过载和感知闭环方面的局限。系统由中央规划智能体、对话引导智能体、参数提取智能体和执行状态分析智能体组成,通过职责分离与显式状态管理实现高效协同。核心创新在于中央决策引擎的确定性逻辑,采用基于规则的状态机设计,确保系统可靠可控。该架构支持自然语言交互、参数自动提取、业务系统操作和视觉闭环验证,能够真正实现"帮办"功能,显著提升政务服务的智能化水平。

469

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ios 指针(三)

由于对ios 指针 以及 对 c 语言指针停留在初始状态,没有太高深的代码显示 #import "PointerExample.h" @implementation PointerExample @synthesize _content,_number; /* 指向指针的指针 */ -(void)pointerTest { NSInteger *number = 10;

shirong0826的专栏 377

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C语言的iOS开发

综上所述,C语言在iOS开发中仍具有重要的地位和应用场景。从历史渊源到现今的实际应用,C语言为iOS开发提供了基础。尽管现代的iOS开发越来越倾向于使用Swift和Objective-C,但C语言的高性能、灵活性和可移植性使其在特定领域依然不可或缺。开发者应该掌握C语言,并灵活运用,使其成为提高iOS应用性能的重要工具。通过不断学习和实践,可以在这条技术道路上走得更远,创造出更加优秀的应用。

2501_91313831的博客 463

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

iOS Objective-C 取Bundle中数据库的指针

刚才发了一个Oc中对数据库简单的增删改查    我们不能对bundle中的数据库直接操作    所以要copy到Directory中进行操作,以下是获取数据库中指针的方法 .h中的代码 #import #import @interface DB : NSObject +(sqlite3 *)DBOpen; +(void)DBClose; @end .m中代码 #i

小才的博客 1185

ios c语言指针,ios – Objective-C / NSObject指针与C指针进行比较

根据appleobjective-c文档,NSObject使用C指针来跟踪它们.我对iOS很新,并且将NSObjects上的指针操作与C指针进行比较会让人感到困惑.例如:NSString *string1 = @"This is a string";NSString *string2;string2 = string 1;在C中,(如果我错了请纠正我)this = b / w 2指针使它们指向相同...

weixin_30814159的博客 166

iOS开发-C语言-指针

一、指针的概念 1、什么是地址? 内存地址──内存中存储单元的编号 (1)计算机硬件系统的内部存储器中,拥有大量的存储单元(容量为1字节)。为了方便管理, 必须为每一个存储单元编号,这个编号就是存储单元的“地址”。每个存储单元都有一个惟一的 地址。 注意:内存单元的地址与内存单元中的数据是两个完全不同的概念

iOS开发之C语言,OC基础 515

c语言 指针(1) 指向数组的指针

1.问文俊的题 2. 注意*和[]等价 注意行指针(类型(*指针变量名)[m];)和列指针(*p)的区分 m是列数 注意运行结果

Banksyw的博客 1780
上一篇: C for ios --- 二维数组与函数
下一篇: 《Android高级进阶》读书笔记——第一章:Android 触摸事件传递机制
ProbuINg
博客等级 码龄14年 10粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值