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

C语言后记-22 初学者如何入门C语言 原文链接:公众号:Allen有话说 之前发了一篇初学者首先应该的学的编程语言,我的建议是C语言,然后有个朋友就私信我说C语言太难学了,学会了也没什么用等等。 一看就是没看完就开始刚我了,我是建议先学,后边肯定还得继续学习,有分析称薪资最高的程序员群体掌握的编程语言为四种。也就是说学习C语言只是为了之后更好学习其他语言,更好的完成工作内容,所以不必纠结了。 在说些C语言太难的问题,这个难其实是因人而异的,而且学习之后的效果也差别很大,所以不是很好定义,但是从大多数学习编程的经验来看,任何一门编程都不算很难, 阅读详情

概述:本文简要介绍了指针的概念、定义方法和简单地应用,指针是一个十分复杂的工具,还包含各种类别,如:字符串指针、结构体指针、函数指针等,此文仅只作入门而已。

一、指针

1.概念

指针的概念,一言以蔽之就是:指针就是地址。那什么又是地址呢?

地址:计算机硬件系统的内部存储器中,拥有大量的存储单元(容量为1字节)。为了方便管理, 必须为每一个存储单元编号,这个编号就是存储单元的“地址”。每个存储单元都有一个惟一的地址。

2.指针的意义

提起指针的意义,不得不说到变量的存取方式,变量的存取方式分为两种:直接存取和间接存取。如下图:
这里写图片描述
直接存取:变量的赋值和取值(通过变量名进行存取值)

这里写图片描述
间接存取:通过指针(地址)间接操作完成。

直接存取是把值存入变量中,而变量又存储在地址中,所以,操纵了地址就操纵了地址中的值!除此之外,指针还有如下好处:

1)为函数提供修改调用变量的灵活手段;
2)让函数有多个返回值;
3)可以改善某些子程序的效率 >>在数据传递时,如果数据块较大(比如说数据缓冲区或比较大的结构),这时就可以使用指针
传递地址而不是实际数据,即高传输速度,又节省大量内存;
4)为动态数据结构(如二叉树、链表)提供支持。
其中(2)点将在下面指针的应用中有具体的实例体现。

二、指针变量

1.概念

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

2.指针变量定义方法

对指针变量的定义包括三个内容:
- 1)指针类型说明,即定义变量为一个指针变量;
- 2)指针变量名;
- 3)变量值(指针)
其一般形式为:

    类型说明符 *变量名; 

其中,*表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型。

注意:
- 1)在定义指针时,“*”号表示定义的变量是指针变量,变量的值只能存放地址。
- 2)一个类型的指针只能指向同类型的变量,不能指向其他类型的变量。
- 3)指针也可以被声明为全局、静态局部和局部的。

三、指针的应用

1.使用指针引用数组元素

如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素,p-1指向同一数组中的上一个元素。对于数组a和指向数组a的指针p来说:
- 1)如果p的初值为&a[0],则p+i和a+i就是数组元素a[i]的地址,或者说,它们指向a数组 序号为i的元素
- 2)(p+i)或p+i或a(a+i)是+i所指向的数组元素,即a[i]。
- 3)如果指针p1和p2都指向同一数组

结论: 引用一个数组元素,可用下面两种方法:
- 1)下标法,如a[i]形式
- 2)指针法,如(a+i)或(p+i)收地
- 3)a是常量(a++错误),p是变量(p++正 确)

2.使用指针让函数有多个返回值

  由于地址直接操纵了地址,所以在函数中操纵地址内存储的变量的话,变量的值也会得到修改,代码如下:

这里写图片描述

程序中并没有通过返回值来修改两个参数的值而是交换了地址内存储的内容,从而更“彻底”地交换了参数的值,可见指针是多么强大的工具啊。

四、字符串指针

1.字符串和字符串指针

在C语言中,可以用两种方法访问一个字符串,
- 1)字符数组
char string[]=”I love China!”;
printf("%s\n",string);

- 2)字符串指针指向字符串
char *变量名="字符串内容"; //"字符串内容"是常量
har *str="abc"
char ch = 'b';
char *p1 = &ch;

字符串指针变量的定义说明与指向字符变量的指针变量说明是相同的。只能按对指针变量的赋值不同来区别。对指向字符变量的指针变量应赋予该字符变量的地址。

2.字符串指针定义和初始化

定义的同时进行初始化
char *ps="C Language";
等效于先定义后初始化:
char *ps;
ps="C Language";

3.字符串指针使用注意事项

  • 1)使用字符数组来保存的字符串是保存栈里的,保存栈里面东西是可读可写,所有我们可以改变里面的字符当把一个字符串常量赋值一个字符数组的时候,那么它会把字符串常量 中的没有字符都放到字符数组里面
  • 2)使用字符指针来保存字符串,它保存的是字符串常量地址,常量区是只读的,所以我们不可以修改字符串中的字符 ,但是我们可以令字符串指针重新指向新的字符串
  • 3)字符串指针不能直接接受键盘输入,否则会报错
    这里写图片描述
    错误的原因是:str是一个野指针,他并没有指向某一块内存空间,所以不允许这样写如果给str分配内存空间是可以这样用的,解决方式是让指针指向一个字符数组或者用malloc开辟一块内存空间给指针即可。

在之前的学习中,我们已经学习了字符串,但是个人感觉,字符串有一点十分不方便的地方就在于,定义的时候要设定字符串的长度,而字符串指针则不同,字符串指针内只是存储了字符串的首地址,至于字符串有多长,并没有那么苛刻的限制,但是字符串指针也有局限性,就是需要把指针指向一个字符串,或是需要手动malloc一段内存空间给字符串。另外值得注意的是,定义一个字符串后,不能通过scanf的方式获取用户录入的内容,否则会报错!

SOI LDMOS器件的Sentaurus TCAD建模与关键电学特性仿真研究 本文研究了SOI LDMOS器件的TCAD建模与电学特性仿真。通过Sentaurus TCAD平台建立了单RESURF结构的SOI LDMOS模型,详细阐述了器件结构原理和RESURF耐压机制。研究采用SDE进行几何定义和掺杂配置,在Sentaurus Device中构建了完整的物理模型体系,包括迁移率、复合和碰撞电离模型。通过系统仿真提取了器件的转移特性、输出特性和击穿特性等关键参数,分析了各参数对性能的影响规律。研究结果为功率半导体器件的仿真建模提供了规范化参考,有助于优化SOI LDMOS的性能设计。 阅读详情

相关推荐

【硬件开发】振铃

如果是开关管的振铃,那么桥臂的SW处产生的振铃会窜入驱动电路,造成的结果就是驱动电路和上桥臂下桥臂之间的SW节点都会有振铃现象。如果是驱动电路的振铃,那么MCU的输出引脚还是正常的PWM,但是到了MOS管两侧就变成带有振铃的PWM波形了。开关振铃产生的原因是MOS管上面的寄生电感当开关管打开时为了保持电流不变感应出的电压会对电源和地产生冲击。开关管的驱动线上的寄生电容和寄生电感导致的振铃为驱动电路振铃。开关管上的寄生电容和寄生电感导致的振铃为开关节点振铃。、电感等元件的存在,导致电路中的电压和。

weixin_62546664的博客 1828

ios开发-IOS概述和C语言入门

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一.什么是IOS      IOS简单说就是应用在苹果手机(IPhone)和苹果平板电脑(Ipad)上的操作系统. 二.IOS的发展史      IOS是基于UNIX的操作系统,最早在2007年由苹果公司为其手机iPhone设计,经过这些年的发展,现在可用于iPad等终端设备上,由于其设

anuodexiaodi的专栏 627

RWEQ土壤风蚀模型的估算与变化归因分析

本次以介绍RWEQ模型的基本原理及数据需求,再结合案例讲解RWEQ模型中区域地理空间数据库构建的方法和各个参量提取的原理与方法,最后结合典型案例进行综合讲解风蚀模数估算、制图及归因分析。空间分析与制图:提取分析、局部分析、邻域分析、区域分析、插值分析、平滑处理、像元提取、采样与重采样。以某实际应用为案例,掌握RWEQ模型进行当地土壤风蚀量空间分布分析整体流程。地图服务器、在线地图、范围指示器、格网、表格、基础地图服务使用规则介绍。掌握土壤风蚀模型的原理、优势点及因子组成。

2301_77413856的博客 1194

iOS及C语言的简介

# iOS设备发展史 1.iPhone 发展史 2. iPad 发展史 3. iPad mini 发展史 ##1.iPhone 发展史 - iPhone一代(iPhone2G)     + 2007年发布     + 支持电子邮件、移动通话、短信、网络浏览等     + **采取触摸键盘**     + 3.5英寸,480x320像素     + 后置摄像头200万像素

u012938194的专栏 1492

机器学习——Anaconda下载安装教程

Anaconda详细下载安装教程

2401_83693485的博客 3067

手把手教你用SpringBoot+Vue3+Docker从零搭建一个在线OJ系统(附完整源码)

本文详细介绍了如何使用SpringBoot、Vue3和Docker从零搭建一个在线OJ系统,涵盖前后端开发、判题机实现及Docker容器化部署。通过完整的源码和实战步骤,帮助开发者掌握OJ系统的核心架构与关键技术,适用于算法训练、编程竞赛等场景。

weixin_42648844的博客 297

ios的c语言,iOS基础之C语言部分

1. C语言初探程序运行过程预处理(Pre-Processing) : 预编译过程主要处理那些源代码文件中以”#”开始的预编译指令。"#define"指令:处理条件预编译指令,比如"#if"、"#ifdef"、"#elif"、"#else"、"#endif",将所有的"#define"删除展开所有的宏定义。 "#include"预编译指令 : 将被包含的文件插入到该预处理指令位置。这是一个递归过程...

weixin_29281941的博客 783

Cursor 使用教程(2025年更新版)

官方Cursor详细使用教程在“扩展学习”

我是赛博AI Lewis 7082

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

指针

IOS_龙的博客 1657

工业视觉光源频闪控制的三种核心模式与选型实战

本文深入解析工业视觉系统中光源频闪控制的三种核心模式:光源主控、相机主控与硬同步。针对高速飞拍、缺陷检测等场景,详细对比了各模式的时序原理、硬件要求与适用场景,并提供了基于产线速度与检测需求的实战选型指南,帮助工程师有效消除运动模糊、提升成像质量与系统稳定性。

weixin_29299807的博客 435

上线之前多一道闸:业务审核系统的接入定义、双轨状态机与可靠生效闭环

运营后台“保存即生效”,让价格、库存、人群等配置每次修改都相当于一次无评审的上线。本文以至尊会员降价活动为例,系统拆解业务审核系统:用带业务语义的操作编码、规则化审核人与候选人快照、完整的生效回调契约做好接入定义;把业务改造为提交待生效,以不可变快照、字段级差异和唯一约束加幂等号防误配防重复;用审批轨与执行轨双轨状态机、链路式重新提交和以事件为准的审核链路理清状态;最后以发件箱、幂等键、超时先查后试、乐观锁与对账闭合生效环节,并结合两个可运行的Java程序,给出五种生效策略的事故率实测对比。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 6万+

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

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

webor2006的博客 319

YOLOv8改进 | Conv篇 | 利用YOLOv9的GELAN模块替换C2f结构(附轻量化版本 + 高效涨点版本 + 结构图)

本文给大家带来的改进机制是利用2024/02/21号最新发布的YOLOv9其中提出的GELAN模块来改进YOLOv8中的C2f,GELAN融合了CSPNet和ELAN机制同时其中利用到了RepConv在获取更多有效特征的同时在推理时专用单分支结构从而不影响推理速度,同时本文的内容提供了两种版本一种是参数量更低涨点效果略微弱一些的版本(参数量V8n下降80w,计算量为6.1GFLOPs),另一种是参数量稍多一些但是效果要不参数量低的效果要好一些(均为我个人整理),提供两种版本是为了适配不同需求的读者,具体选择

Snu77的博客 7567

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

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C语言的iOS开发

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

2501_91313831的博客 464

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

C语言指针小总结

主要资料来源: https://www.jianshu.com/p/355374e03fb3//默写年华Antifragile http://c.biancheng.net/cpp/html/71.html //C语言中文网 https://www.cnblogs.com/wuyudong/p/c-void-point.html //wuyudong 书籍:疯狂iOS讲义 最近...

CoderL 466

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C语言回顾(六、基类型,数组指针,字符串指针,函数指针,文字常量区)——iOS开发基础

整理C语言知识点 基类型,指针运算,指针变量,数组指针,字符串指针,函数指针,文字常量区

弄潮者的博客 3967

iOS开发之c语言入门教程

苹果作为移动互联的高端品牌,iOS操作系统也被用户公认为是最好用的移动互联网操作系统。据了解,曾一度拒绝为iOS平台对出浏览器的火狐在今年5月份的时候,他们却食言了。今天,Mozilla宣布iOS版Firefox的首个公开预览版正式推出,Beta正式结束,新西兰用户现在已能尝鲜。由此可见,iOS的发展已经是势不可挡。   iOS的发展无疑为很多开发爱好者提供了新的机遇,要想利用iOS平台开发出好

haru2015的博客 1094

【C语言】01-C语言概述

这个C语言专题,是学习iOS开发的基础。万丈高楼平地起,如果你还没有编程经验,建议你,最好是先耐心从最基础的C语言学起。此篇是C语言概述,简单地认识一下C语言。

andycheungios的博客 996

从C语言开始搞iOS开发

为什么学习iOS开发之前要从C语言开始学起?

IOS_龙的博客 331

c语言26个字母指针数组排序,C语言:通过指针对数组元素进行排序

//// main.c// Pointer_array//// Created by ma c on 15/8/2.// Copyright (c) 2015年 bjsxt. All rights reserved.// 要求:使用指针的指针输出字符串。首先要使用指针数组创建一个字符串数组,然后定义指向指针的指针,使其指向字符串数组,并使用其输出数组中的字符串。同时对数组中的内容进行升序...

weixin_31569671的博客 1571

c语言函数指针 的定义方法,C语言 函数指针一(函数指针的定义)

//函数指针#include#include#include//函数指针类型跟数组类型非常相似//函数名就是函数的地址,函数的指针,对函数名进行&取地址操作,还是函数名本身,这是C语言编译器的特殊处理void test(int a){printf("a=%d\n",a);}void ProtectA(){//定义函数类型typedef void(FunType)(int);FunType ...

weixin_39898150的博客 1313

C语言中 字符、数组、字符串、指针——学习IOS你必须了解

一、char类型 1、内存存储:对应于ASCII码表存储 字符 ASCII码值 内存存储 A    65        0100 0001 B    66        0100 0010 C    67        0100 0011 a    97        0110 0

陈玄正的专栏 827

系列:iOS开发-C语言基础

系列:iOS开发-C语言基础之前也说了iOS中的OC是扩充C的面向对象编程语言 那么无论是从什么角度来说都要首先回顾一下C的内容,虽然很多人在大学的时候都有学习过C语言,一提到谭浩强,我估计90%的人都熟悉,至于为什么,我也不知道... 首先科普一下C部分的介绍:C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行

spicyShrimp的博客 1075

ios 语言适配默认语言_ios从入门到放弃之C基础巩固C语言学习方式、开发环境熟悉、关键字纵览、数据类型、常量、变量&内存...

在上一次ios从入门到放弃之背景了解---iPhone&iPad发展史、iPod Touch 和 Apple TV了解、Xcode了解IOS的开篇中纯扯蛋了,接下来则开启正式IOS的学习之旅,也就是开启撸码环节,而对于IOS正确的姿势应该是按这个顺序来:C--->OC--->Swift,所以学习也按正确的姿势来学习会比较踏实,那就是先从C开始学喽,其实在老早之前就学习...

weixin_32029863的博客 100

[黑马IOS自学第六篇]C语言指针,数组指针,字符指针学习

%s 输出字符直到遇到'\0'结束   // // main.c //  C10指针 // // Created by CHINGWEI_MACPC on 15/10/26. //  Copyright © 2015年 itcast. All rights reserved. //   /*  abcd  abcd  abc  */

wadeAD的博客 667
上一篇: 欢迎使用优快云-markdown编辑器
下一篇: iOS概念入门学习-C语言-字符串
苍蓝残影
博客等级 码龄16年 4粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值