抓狂的指针
2015-12-06 15:19
169 查看
oc里面大多数对象都是指针类型,例如NSString *name。oc的对象创建出来时系统就自动给他分配好了空间,也就是说,一个变量对应两块空间,一个用来存储变量本身(类变量),一个是这个变量指向的空间。但是他们存储的位置不一样。而且,oc的函数可以对传进来的参数进行修改。
还有一些方便的用法,比如:
int n;
scanf(“%d”,&n);
int a
;
这样在OC里面是完全可以的,原因是在生成数组时,自动添加了malloc机制,可以确定要给数组分配多大的空间,有点动态分配的意思。
Object—C封装的一些方法太好用了,它可以偷偷的帮你完成很多工作,但是,这些我们没办法看到,很多东西你都不知道他的存在,用多了真的会和其他语言搞混。
以前没意识到这个问题,最近在用c语言写数据结构,发现,看似相同的语法,但是用起来是完全不同的。
在C里,定义一个指针变量,他就是一个变量,可以指来指去,但前提是它必须指向一块已经分配好的空间,在OC里 NSString *name=@“张三”;可是到了C里面,char *name;我们想要让name指向“张三”,就必须先手动给name分配足够的空间。
C语言定义一个数组,是万万不能在[ ]里面出现变量的,要不然还用malloc干什么。
还有字符串的库函数,strcpy;strlen;strcat等,他们的参数是字符型指针,但使用的之前一定要确保这些参数都有可以指向的空间。
诸如上述的问题还有很多,同学们得快速转换,不要和我一样死在scanf上。
刘萌
还有一些方便的用法,比如:
int n;
scanf(“%d”,&n);
int a
;
这样在OC里面是完全可以的,原因是在生成数组时,自动添加了malloc机制,可以确定要给数组分配多大的空间,有点动态分配的意思。
Object—C封装的一些方法太好用了,它可以偷偷的帮你完成很多工作,但是,这些我们没办法看到,很多东西你都不知道他的存在,用多了真的会和其他语言搞混。
以前没意识到这个问题,最近在用c语言写数据结构,发现,看似相同的语法,但是用起来是完全不同的。
在C里,定义一个指针变量,他就是一个变量,可以指来指去,但前提是它必须指向一块已经分配好的空间,在OC里 NSString *name=@“张三”;可是到了C里面,char *name;我们想要让name指向“张三”,就必须先手动给name分配足够的空间。
C语言定义一个数组,是万万不能在[ ]里面出现变量的,要不然还用malloc干什么。
还有字符串的库函数,strcpy;strlen;strcat等,他们的参数是字符型指针,但使用的之前一定要确保这些参数都有可以指向的空间。
诸如上述的问题还有很多,同学们得快速转换,不要和我一样死在scanf上。
刘萌
相关文章推荐
- Android与Linux中从uid到用户名的映射
- 用Windows API 编写的简单贪吃蛇游戏
- 年轻人,别动不动就想搞个“大社交”,工具型社交才是正路子
- C++:string转char*
- Apache Prefork、Worker和Event三种MPM工作模式分析
- 404错误的处理方式及对SEO的影响
- OnInitDialog不执行
- HTML5 Canvas画标准的五星红旗(中国国旗)
- linux 下shell
- 冒泡排序
- ZYB's Game(博弈)
- Python爬虫实战一之爬取糗事百科段子
- PAT 1008 数组元素循环右移问题
- [Linux基础环境/软件]Linux下安装mysql
- C++:int转string
- Zookeeper权限管理与Quota管理
- 实现Discuz x3.1 读写分离
- raw_input() 与input()
- c++虚函数
- poj 1488 TEX Quotes(水题)