ios基础入门——malloc方法

char m;

scanf(" %c",&m); //前面加空格是为了去掉空格、回车等操作

NSLog(@"the character is %c",m);

上面这个程序是各位比较熟悉的两个方法一个输入、一个输出,但是如果我改一下改成

char *m;

NSLog(@"\n请输入一个字符");

scanf(" %c",m);

NSLog(@"\nthis is %c",*m);

是否正确呢,编译时是否会报错,运行时是否会出问题?

其实这个程序,如果编译的时候不会出现异常,但是如果运行的话,会出现运行时异常(出现lldb命令,使用kill命令结束即可),原因是就是我们定义了一个char指针m,这个指针没有进行初始化赋值,导致程序运行时无法找到存储这个字符的内存空间,如果改成

char *m;

m=(char *)malloc(sizeof(char));//malloc()动态分配内存,用malloc分配内存的首地址,然后赋值给m

NSLog(@"\n请输入一个字符");

scanf(" %c",m);

NSLog(@"\nthis is %c",*m);

如果使用malloc方法进行分配空间之后,程序便可以正常进行,sizeof方法获得对应类型的空间大小

趁热再来一发,因为使用malloc进行动态分配空间,所以我们可以使用char指针输出字符串,如下:

char *a;

a=(char *)malloc(sizeof(char)*100); //动态分配100个连续的char内存地址

NSLog(@"\n请输入一个字符串");

scanf(" %s",a);

NSLog(@"\nthis is %s",a);

时间: 2024-10-21 07:07:47

ios基础入门——malloc方法的相关文章

ps基础入门快捷方法总结

1. 快速打开文件 双击Photoshop的背景空白处(默认为灰色显示区域)即可打开选择文件的浏览窗口. 2. 随意更换画布颜色 选择油漆桶工具并按住Shift点击画布边缘,即可设置画布底色为当前选择的前景色.如果要还原到默认的颜色,设置前景色为25%灰度(R192,G192,B192)再次按住Shift点击画布边缘. 3. 选择工具的快捷键 可以通过按快捷键来快速选择工具箱中的某一工具,各个工具的字母快捷键如下: 工具 快捷键 工具 快捷键 选框 M 移动 V 套索 L 魔棒 W 喷枪 J 画

《慕客网:IOS基础入门之Foundation框架初体验》学习笔记 <五> NSDicionary

1 int main(int argc, const char * argv[]) { 2 @autoreleasepool { 3 //字典, 存储的内存不是连续的 用key和value进行对应(键值) 4 //kvc 键值编码 5 NSDictionary *dic = [NSDictionary dictionaryWithObject:@"1" forKey:@"a"]; 6 NSLog(@"%@",dic);//以上的方法是不常用的 7

C#基础入门 四

C#基础入门 四 方法参数 值参数:不附加任何修饰符: 输出参数:以out修饰符声明,可以返回一个或多个给调用者: 如果想要一个方法返回多个值,可以用输出参数来处理,输出参数由out关键字标识,如static void Car(out int x,out int y,int z){},与引用参数区别在于:调用方法前无需对输出参数进行初始化,输出型参数用于传递方法返回的数值. 计算矩形面积的方法:(图8) static void rectangle(int length,int width, ou

Android基础入门教程——5.2.1 Fragment实例精讲——底部导航栏的实现(方法1)

Android基础入门教程--5.2.1 Fragment实例精讲--底部导航栏的实现(方法1) 标签(空格分隔): Android基础入门教程 本节引言: 在上一节中我们对Fragment进行了一个初步的了解,学习了概念,生命周期,Fragment管理与 Fragment事务,以及动态与静态加载Fragment.从本节开始我们会讲解一些Fragment在实际开发 中的一些实例!而本节给大家讲解的是底部导航栏的实现!而基本的底部导航栏方法有很多种, 比如全用TextView做,或者用RadioB

Android基础入门教程——5.2.2 Fragment实例精讲——底部导航栏的实现(方法2)

Android基础入门教程--5.2.2 Fragment实例精讲--底部导航栏的实现(方法2) 标签(空格分隔): Android基础入门教程 本节引言: 上一节中我们使用LinearLayout + TextView实现了底部导航栏的效果,每次点击我们都要重置 所有TextView的状态,然后选中点击的TextView,有点麻烦是吧,接下来我们用另一种方法: RadioGroup + RadioButton来实现我们上一节的效果! 1.一些碎碎念 本节用到的是实现单选效果的RadioButt

IOS开发语言Swift入门连载---方法

IOS开发语言Swift入门连载-方法 方法是与某些特定类型相关联的函数.类.结构体.枚举都可以定义实例方法:实例方法为给定类型的实例封装了具体的任务与功能.类.结构体.枚举也可以定义类型方法:类型方法与类型本身相关联.类型方法与 Objective-C 中的类方法(class methods)相似. 结构体和枚举能够定义方法是 Swift 与 C/Objective-C 的主要区别之一.在 Objective-C 中,类是唯一能定义方法的类型.但在 Swift 中,你不仅能选择是否要定义一个类

Android基础入门教程——5.2.3 Fragment实例精讲——底部导航栏的实现(方法3)

Android基础入门教程--5.2.3 Fragment实例精讲--底部导航栏的实现(方法3) 标签(空格分隔): Android基础入门教程 本节引言 前面我们已经跟大家讲解了实现底部导航栏的两种方案,但是这两种方案只适合普通的情况,如果 是像新浪微博那样的,想在底部导航栏上的item带有一个红色的小点,然后加上一个消息数目这样, 前面两种方案就显得无力了,我们来看看别人的APP是怎么做的,打开手机的开发者选项,勾选里面的: 显示布局边界,然后打开我们参考的那个App,可以看到底部导航栏是这

《2015最新Android基础入门教程》完结散花~

<2015最新Android基础入门教程>完结散花~ 标签(空格分隔): 反思小结 引言: 从六月底就开始编写这套教程,历时将近五个多月,今天终于写完了,全套教程正文部分148篇, 十大章,从基本UI控件到四大组件,Intent,Fragment,事件处理,数据存储,网络编程,绘图与动画, 多媒体,系统服务等都进行了详细的讲解!代码都是都是在Android Studio上进行编写的,全文 采用Markdown,行文结构清晰,还结合了实际开发中一些常见的问题进行了剖析-由于个人能力的局限, 虽然

【IOS】IOS快速入门之OC语法

Objective-C 是 C 语言的超集 您还可以访问标准 C 库例程,例如在 stdlib.h 和 stdio.h 中声明的那些例程. Objective-C 还是一种非常动态的程序设计语言,而且这种动态是其最大优势.这种动态体现在它允许在运行应用程序时(即运行时)才去确定其行为,而不是在生成期间就已固定下来.因此,Objective-C 的动态机制让程序免受约束(编译和链接程序时施加的约束):进而在用户控制下,将大多数符号解析责任转移到运行时. 当您想要在源代码中包括头文件时,请在头文件或