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

这里写图片描述

指针对于C语言来说重要的意义不言而喻,C语言没掌握指针就相当于没学。但作为iOS开发来说,并没有想象的那么难,因为在iOS开发中,objective c 语言以及把指针优化成类似数据类型来使用,把指针具体化了,使得整个指针没有那么复杂了,并且在iOS开发中,多级指针的使用是非常非常少的,所以对于iOS开发人员来说,学习C语言的指针别纠结,别纠结,别纠结,掌握指针在C语言中概念,一级指针的基本概念,指针变量的定义,指向函数的指针等。

一 、字符串
字符串是位于双引号中的字符序列
在内存中以“\0”结束,所占字节比实际多一个 。

字符串的初始化
char name[9] = “lnj”; //在内存中以“\0”结束, \0 ASCII码值是0
char name1[9] = {‘l’,’n’,’j’,’\0’};
char name2[9] = {‘l’,’n’,’j’,0};
char name3[9] = {‘l’,’n’,’j’}; //静态数组如果没有赋值默认就是0,0就相当于\0

字符串输出
使用的格式字符串为“%s”,表示输入、输出的是一个字符串 字符串的输出。

%s的本质就是根据传入的name的地址逐个去取数组中的元素然后输出,直到遇到\0位置

注意:
对一个字符串数组, 如果不做初始化赋值, 必须指定数组长度
ch最多存放由9个字符构成的字符串,其中最后一个字符的位置要留给字符串的结尾标示‘\0’当用scanf函数输入字符串时,字符串中不能含有空格,否则将以空格作为串的结束符。

字符串长度
1.利用sizeof字符串长度:
因为字符串在内存中是逐个字符存储的,一个字符占用一个字节,所以字符串的结束符长度也是占用的内存单元的字节数。

2.系统函数
格式: strlen(字符数组名)
功能:测字符串的实际长度(不含字符串结束标志‘\0’)并作为函数返回值。

字符串数组基本概念
字符串数组其实就是定义一个数组保存所有的字符串.

1.一维字符数组中存放一个字符串,比如一个名字char name[20] = “james”

2.如果要存储多个字符串,比如一个班所有学生的名字,则需要二维字符数组,char names[15][20]可以存放15个学生的姓名(假设姓名不超过20字符)

3.如果要存储两个班的学生姓名,那么可以用三维字符数组char names[2][15][20]

字符串数组的初始化
1.char names[2][10] = { {‘l’,’n’,’j’,’\0’}, {‘l’,’m’,’j’,’\0’} };

2.char names2[2][10] = { {“lnj”}, {“lmj”} };

3.char names3[2][10] = { “lnj”, “lmj” };

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

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

这里写图片描述

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

3.指针变量的初始化方法
指针变量初始化的方法有两种:定义的同时进行初始化和先定义后初始化。
1)定义的同时进行初始化
int a = 5;
int *p = &a;

2)先定义后初始化
int a = 5;
int *p;
p=&a;

3)把指针初始化为NULL

int *p=NULL;
int *q=0;

不合法的初始化:
指针变量不能被赋值一个整数值(因为我们不知道这个整形常量是内存哪块地址
int *p;
p = 250; // 错误写法

被赋值的指针变量前不能再加“*”
int *p;
*p=&a; //错误写法

注意:
1.多个指针变量可以指向同一个地址 。
2.指针的指向是可以改变的
int a = 5;
int *p = &a;
int b = 10;
p = &b; // 修改指针指向

4.为什么指针可以指向一个函数?
函数作为一段程序,在内存中也要占据部分存储空间,它也有一个起始地址,即函数的入口地址。函数有自己的地址,那就好办了,我们的指针变量就是用来存储地址的。因此,可以利用一个指针指向一个函数。其中,函数名就代表着函数的地址。

使用注意:
由于这类指针变量存储的是一个函数的入口地址,所以对它们作加减运算(比如p++)是无意义的
函数调用中”(指针变量名)”的两边的括号不可少,其中的不应该理解为求值运算,在此处它 只是一种表示符。

以上就是字符串和指针的概念总结,由于时间有限,不能够把指针的其他特性一一进行总结,因为我觉得作为一名iOS开发工程师来说,掌握这些还远远不够,希望在以后的工作学习中,总结出更多更实用的东西。

这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值