swift 里面对应C 的基础类型前面加C,CInt、CBool和CChar

UnsafePointer<CChar> 对应C的 const char *;常量指针不可变

UnsafeMutablePointer<CChar> 对应C的 char *;可变指针

下面第一行为String 转 char*;第二行为char* 转String

  1. let sss = UnsafePointer<CChar>("char string..".cStringUsingEncoding(NSUTF8StringEncoding))
  2.  
  3. print(String.fromCString(sss))

比如下面使用C语言objc/runtime遍历当前类中所有成员变量,使用了UnsafeMutablePointer<UInt32>,对应C里面 unsigned int *varCount

  1. let varCount:UnsafeMutablePointer<UInt32> = UnsafeMutablePointer<UInt32>.alloc()
  2. varCount.initialize()
  3. let classVars = class_copyIvarList(self.classForCoder, varCount)
  4. for i in ... (Int(varCount.memory)-){
  5.   let c:Ivar = classVars[i]
  6.   let name = ivar_getName(c)
  7.   let ncc = UnsafePointer<CChar>(
      let nsc = String.fromCString(ncc)
  8.   print(nsc)

  9.   let type = ivar_getTypeEncoding(c)
  10.   let tcc = UnsafePointer<CChar>(type)
  11.   let tsc = String.fromCString(tcc)
  12.   print(tsc)
  13. }
  14. free(classVars)

用OC翻译过来可以这样写

  1. unsigned count = ;
  2. Ivar *vars = class_copyIvarList(c, &count);
  3. for (int i = ; i < count; i++) {
  4. Ivar v = vars[i];
  5. const char *name = ivar_getName(v);
  6. const char *nameType = ivar_getTypeEncoding(v);
  7. NSLog(@"==%s==",name);
  8. NSLog(@"==%s==",nameType);
  9. NSString *sname = [NSString stringWithCString:name encoding:NSUTF8StringEncoding];
  10. }
  11. free(vars);

swift中UnsafePointer<T>可以用.memory取得指针指向的值

  1. let ss: UnsafePointer<CChar> = UnsafePointer<CChar>("b".cStringUsingEncoding(NSUTF8StringEncoding))
  2. NSLog("%c-%d", , ss.memory)

swift 与 指针初级使用的更多相关文章

  1. swift 中指针的使用UnsafeMutablePointer

    在swift中已经弱化了指针的使用,可以这么使用 let s: NSRange = NSMakeRange(, ) let at = UnsafeMutablePointer<NSRange&g ...

  2. C语言基础:指针初级(补充) 分类: iOS学习 c语言基础 2015-06-10 21:54 19人阅读 评论(0) 收藏

    结构体指针:指向结构体指针的变量的指针. 结构体指针指向结构体第一个成员变量的首地址 ->:   指向操作符 定义的指针变量必须指向结构体的首地址,才可以使用  ->  访问结构体成员变量 ...

  3. C语言 --- 函数指针(初级)

    1.函数指针:指向函数的指针变量.                 函数在内存中也是有地址的,函数名代表函数的内存地址.    例子:函数:int sum(int a,int b);      int ...

  4. Swift 中的指针使用

    SWIFT 中  指针被映射为泛型 UnsafePointer<T> UnsafeMutablePointer<T> 表示一组连续数据指针的 UnsafeBufferPoint ...

  5. C语言基础:初级指针 分类: iOS学习 c语言基础 2015-06-10 21:50 30人阅读 评论(0) 收藏

    指针:就是地址. &   取地址运算符 %p   打印地址占位符 int a=0; printf("%p ",&a);    指针变量:用来存放地址的变量 定义: ...

  6. Swift中的指针类型

    Swift编程语言为了能与Objective-C与C语言兼容,而引入了指针类型.尽管官方不建议频繁使用指针类型,但很多时候,使用指针能完成更多.更灵活的任务.比如,我们要实现一个交换两个整数值的函数的 ...

  7. swift学习初步(三)--控制流操作

    在上一篇博客里面,我谈到了swift里面的一些基本类型以及相关的操作,相信你看了之后一定会觉得其实swift也不难嘛.好吧,这篇博客里面要谈的一些高级操作,可能会让你有点头疼了. 好了,废话不多说了, ...

  8. Swift 对象内存模型探究(一)

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/zIkB9KnAt1YPWGOOwyqY3Q 作者:王 ...

  9. Swift实战技巧

    Swift实战技巧 从OC转战到Swift,差别还是蛮大的,本文记录了我再从OC转到Swift开发过程中遇到的一些问题,然后把我遇到的这些问题记录形成文章,大体上是一些Swift语言下面的一些技巧,希 ...

随机推荐

  1. 嵌入式 fork与vfork的区别

    fork()与vfock()都是创建一个进程,那他们有什么区别呢?总结有以下三点区别: 1.  fork  ():子进程拷贝父进程的数据段,代码段     vfork ( ):子进程与父进程共享数据段 ...

  2. Linux共享内存(一)

    inux系统编程我一直看 <GNU/LINUX编程指南>,只是讲的太简单了,通常是书和网络上的资料结合着来掌握才比较全面 .在掌握了书上的内容后,再来都其他资料 . 原文链接 http:/ ...

  3. ASP.NET MVC之文件上传【一】

    前言 这一节我们来讲讲在MVC中如何进行文件的上传,我们逐步深入,一起来看看. Upload File(一) 我们在默认创建的项目中的Home控制器下添加如下: public ActionResult ...

  4. 关于“怎么比较两个SQL查询语句产生的结果集是否相同”搜集到的一些资料

    一. 如果你这两个结果集都没有close,可以这样: rs.last(); rs2.last(); if (rs.getRow() != rs2.getRow()) { //记录数不等,即结果不等 } ...

  5. B-树和B+树

    B-树和B+树是一种平衡的多路查找树,它在文件系统中很有用.一颗m阶的b-树,或为空树,或满足下列特性的m叉树.1)树中每个节点至多有m棵子树2)若根结点不是叶子结点,则至少有两棵子树.3)除根之外的 ...

  6. [再寄小读者之数学篇](2014-11-26 广义 Schur 分解定理)

    设 $A,B\in \bbR^{n\times n}$ 的特征值都是实数, 则存在正交阵 $P,Q$ 使得 $PAQ$, $PBQ$ 为上三角阵.

  7. Golang 绘图技术(image/draw包介绍)

          image/draw 包仅仅定义了一个操作:通过可选的蒙版图(mask image),把一个原始图片绘制到目标图片上,这个操作是出奇的灵活,可以优雅和高效的执行很多常见的图像处理任务. 1 ...

  8. HTTP协议学习笔记-1

    基本概念 首先需要了解几个概念: WEB客户端和服务器: WEB客户端当然就是指我们用使用的某个网站 服务器就是WEB资源源头,我们从服务器去请求数据,服务器把请求的数据发给WEB客户端 媒体类型: ...

  9. CSS抗锯齿 font-smoothing

    CSS3里面加入了一个“-webkit-font-smoothing”属性. 这个属性可以使页面上的字体抗锯齿,使用后字体看起来会更清晰舒服. 加上之后就顿时感觉页面小清晰了. 淘宝也在用哦! 它有三 ...

  10. Google软件测试

    google测试相关的职位有三类:软件测试开发工程师.测试工程师以及测试工程经理. 软件测试开发工程师也是一个开发角色,只是工作重心在可测试性和通用测试框架上.他们参与设计评审,非常近距离地观察代码质 ...