【IOS 开发学习总结-OC-7.9-★】 objective-c——字符串与指针
2015-09-15 19:46
549 查看
使用字符指针保存字符串
C语言允许使用字符串指针来保存字符串.我们可以定义一个字符指针变量,让后将C格式的字符串赋给改指针变量。示例代码:
#import <Foundation/Foundation.h> int main(int argc , char * argv[]) { @autoreleasepool{ char* str = "I love iOS"; NSLog(@"%s" , str); // 让str指向第7个元素 str += 7; NSLog(@"%s" , str); } }
示例中的 char *str 定义的是字符指针变量,而不是一个字符串变量。C 语言中没有字符串类型! C 语言的字符串在底层依然是采用字符数组进行保存。指针变量 str, 指向该字符数组的第一个元素(该数组的首地址),当程序使用%s 输出字符串时,系统会自动输出紧跟该字符指针所指元素的每个元素,知道遇到‘\0’为止。
编译,运行程序后,看到如下输出:
I love ios
ios
字符指针作为函数参数
当函数需要字符数组作为参数时,可声明使用 char* 形参。如下示例程序:#import <Foundation/Foundation.h> // 定义函数,使用字符指针作为参数 void copyString(char* to , char* from) { // 如果from指针指向的字符不为\0。 while(*from) { // 将from变量指向的字符赋给to变量指向的元素 *to++ = *from++; } *to = '\0'; } int main(int argc , char * argv[]) { @autoreleasepool{ char* str = "www.crayit.org"; char dest[100]; // 将str赋值到dest中 copyString(dest , str); //① NSLog(@"%s" , dest);//结果为:www.crayit.org // 将字符串复制到dest中 copyString(dest , "Objective-C is Funny!"); //② NSLog(@"%s" , dest);//结果为:Objective-C is Funny! } }
有上门程序可以看出,字符数组和字符指针变量在很多地方可以彼此代替。但要注意以下几点:
1. 字符数组底层每个字符对应一个数组元素;而字符指针指向字符数组时,只存放字符数组的首地址。
2. 字符数组只在定义时赋值。而字符指针可以重复赋值。
比如:对于字符数组来说:
char[] str="baidu.com";是正确的。而
char[50] str;
str ="baidu.com";是错误的。
对于字符指针:
char *str="www.sina.com";与
char* str;
str="www.sina.com";是等价的,2种方式都是可以的。
3. 定义一个字符数组时,程序会为每个数组元素分配内存空间,但定义字符指针变量时,程序只是定义一个指针变量,该指针变量所指向的内存单元是不确定的。
相关文章推荐
- Objective-C 【NSFileManager 的用法深入探讨】
- Objective-C 基础知识之(六):NSArray、NSMutableArray
- 使用Uncrustify在Xcode中格式化Objective-C代码
- iOS~Objective-C中的instancetype和id区别
- Objective-C 与 Swift 混编之路
- Linq入门详解(Linq to Objects)
- Objective-C 【NSFileManager 介绍-基本用法】
- OGNL(Object-Graph Navigation Language):图形化对象导航语言
- Objective-C之数据持久化-属性列表
- Object-c中间initialize 与 辛格尔顿
- OC中方法的一些小疑问
- java 用反射简单应用,将Object简单转换成map
- Qt 学习之路:线程和 QObject
- OC一些字符串的练习
- Object类中hashCode()和equals()方法详解(附图)
- Android-Animator属性动画( ObjectAnimator , AnimatorSet , ValueAnimator )
- objective-C
- 缺少动态连接库.so--cannot open shared object file: No such file or directory
- Objective C----手动管理内存和自动管理内存
- 【IOS 开发学习总结-OC-7.8-★★】 objective-c——指针与数组