ios兴趣班(二)

C语言:

1.数据类型

C的数据类型包括:

      整型(int)、字符型(char)、浮点型(单(float)、双精度(double))、布尔型(bool)、枚举类型(enum)、数组类型(arr[])、结构体类型(struct)、指针类型(*p)和空类型。

2.常量与变量

(1) 常量其值不可改变,符号常量名通常用大写。 

(2) 变量是以某标识符为名字,其值是可以改变的量。

(3) 标识符是以字母或下划线开头的一串由字母、数字或下划线构成的序列,请注意第一个字符必须为字母或下划线,否则为不合法的变量名。变量在编译时为其分配相应存储单元。

3.数组

(1) 如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明。例如:int arr[5];

(2) 字符串也是一种数组。它们以ASCII的NULL作为数组的结束。要特别注意的是,方括内的索引值是从0算起的。、

4.结构的声明

第一种声明方式:标准,正规的
struct person{
int age;
float height;
};
第二种声明方式,相当于匿名的结构
一般只用一次
struct {
 int age;
 float height;
 }p2;
第三种
typedef struct Emp{
int age;
} Employee;
第四种
typedef struct {
int age;
} Employee;

5.指针

(1) 如果一个变量声明时在前面使用 * 号,表明这是个指针型变量。换句话说,该变量存储一个地址,而 * 则是取内容操作符,意思是取这个内存地址里存储的内容。

(2)指针不仅可以是变量的地址,还可以是数组、数组元素、函数的地址。通过指针作为形式参数可以在函数的调用过程得到一个以上的返回值(不同于return(z)这样的仅能得到一个返回值。

(3)指针是一把双刃剑,许多操作可以通过指针自然的表达,但是不正确的或者过分的使用指针又会给程序带来大量潜在的错误。

(4)指针的基本应用:

      1)、++,--,+,-      

int arr[]={1,2,3};
    int *p=arr;
    int *p2=&arr[1]; p2--;
    printf("%d\n",*p2);

      这里会输出1;

      2)、作为函数参数

int jiaohuan(int *a,int *b)
{
    int temp=*a;
    *a=*b;
    *b=temp;
}

      3)、作为函数返回值

 char* GetMemory()
            {
                     char *p = new char[100];
                     return p;
            } 

      4)、void*

          void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。但这并不意味着,void *也可以无需强制类型转换地赋给其它类型的指针。因为“无类型”可以包容“有类型”,而“有类型”则不能包容“无类型”。呵呵,这个道理蛮简单,我们可以说“男人和女人都是人”,但不能说“人是男人”或者“人是女人”。

      5)、指针数组:int *p[3];

          首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称

#include <stdio.h>
//用指针数组输出字符串
int main(){

    char *p[5]={"qwe","asd","rtt","fgh","vbc"};
    int i;
    for (i = 0; i < 5; i++)
    {
        printf("%s\n",p[i]);
    }

}

      6)、指针的指针:类型符**变量名(例如:**p)

int a=5;
    int *p;
    int **pp;//*pp是指向int*类型数据的指针
    p=&a;
    pp=&p;//将p的地址赋给pp
    **pp=a;

      7)、函数指针

       

 int (*f) (int x); /* 声明一个函数指针 */
#include <stdio.h>

int add(int a,int b)
{
    return a+b;
}

int main(){

    int a=3;
    int b=3;
    int (*p)(int,int);
    p=add;
    int result=(*p)(a,b);
    printf("%d\n",result );
}

      8)、指针的作用:

          指针可以用来有效地表示复杂的数据结构,可以用于函数参数传递并达到更加灵活使用函数的目的.使C语言的设计具有灵活、实用、高效的特点。指针不仅仅是C语言的灵魂,运用得好更是事半功倍,让你写出的程序更简洁!

6.常用调试命令(lldb)

file 文件名
b(breakpoint)  断点
br list 所有的断点
br del 删除断点
l 显示代码
n:next 下一个 
s:sept 单步运行
continue 继续
finish 结束
print 打印某一变量的值
frame variable 帧变量
diplay 每次运行到断点就显示变量的值,用于观察变量的变化
expr 改变函数的值
q 退出运行

7.动态内存

(1) malloc

(2)calloc

(3)realloc

(4)free

时间: 2024-10-01 03:04:32

ios兴趣班(二)的相关文章

iOS开发-二维码扫描和应用跳转

iOS开发-二维码扫描和应用跳转 序言 前面我们已经调到过怎么制作二维码,在我们能够生成二维码之后,如何对二维码进行扫描呢? 在iOS7之前,大部分应用中使用的二维码扫描是第三方的扫描框架,例如ZXing或者ZBar.使用时集成麻烦,出错也不方便调试.在iOS7之后,苹果自身提供了二维码的扫描功能,从效率上来说,原生的二维码远高于这些第三方框架.本文讲解如何使用原生框架实现二维码扫描功能,并且进行扫描后的项目跳转.ps:本期的源代码会在文章结尾给出链接 扫描相关类 二维码扫描需要获取摄像头并读取

iOS之二维码的制作与扫描

IOS之二维码的制作与扫描     二维码SDK的Dome“QRCode”中制作libqrencode库文件,扫描ZBarSDK库文件1.制作二维码  /*字符转二维码导入 libqrencode文件添加  #import "QRCodeGenerator.h"@property (strong , nonatomic) UIImageView* qRImageView;- (void)viewDidLoad{    [super viewDidLoad];    self.qRIma

iOS 花式二维码生成和二维码识别

iOS 原生的二维码识别非常之棒,反正比 ZXing 和 ZBar 效果都好些,所以以后打算尽量用原生的二维码识别,然后最近把原生的二维码生成也顺便做了一遍,并且在原有基础上加了一些样式参数,封了一个小库方便以后使用. 项目地址:https://github.com/EyreFree/EFQRCode EFQRCode 是一个用 Swift 编写的用来生成和识别二维码的库,它基于系统二维码生成与识别进行开发. 生成:利用输入的水印图/图标等资源生成各种艺术二维码: 识别:识别率比 iOS 原生二

Use GraceNote SDK in iOS(二)获取音乐的完整信息

在需求彻底明朗化,外加从MusicFans转到GraceNote,再从GraceNote的GNSDK转到iOS SDK后,终于完成了在iOS上通过音乐的部分信息获取完整信息的功能了.(好吧,我承认是相对完整...) 首先介绍下在项目中配置GraceNote的iOS SDK. SDK的下载地址:Mobile Client 注意要先登录才能见到文件的下载链接.另外官网还给出来一个SDK的配置文档,完全跟着走在Xcode 5是走不通的,不过也具有一定的指导作用,建议看一看. 下载解压后,新建一个工程,

二维码扫描(iOS原生二维码扫描)

一.关于二维码扫描的第三方库有很多:例如比较常用的两个 1.ZBar SDK ZBar为我们提供了两种使用方式,一种是直接调用ZBar提供的ZBarReaderViewController打开一个扫描界面,另一种方式是使用ZBar提供的可以嵌在其他视图中的ZBarReaderView,实际项目中我们更可能会使用第二种方式,这可以让我们对界面做更多的定制,详细的百度查找相关文档来看. 2.ZXing(Github镜像地址)是一个开源的条码生成和扫描库(开源协议为Apache2.0).它不但支持众多

猫猫学IOS(二十五)UI之触摸事件

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents iOS中的事件 在用户使用app过程中,会产生各种各样的事件;iOS中的事件可以分为3大类型: 响应者对象–UIResponder 在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件.我们称之为"响应者对象" UIApplication.UIViewController.UI

iOS学习(二)之深复制&amp;浅复制

1.无论是深复制还是浅复制,被复制的对象类型是不变的.此对象类型具有什么功能就具有什么功能,不会因为自行修改了返回对象的指针类型而改变. 比如: 这里的str和str1的值和指针地址完全一样,因为是不可变类型使用了copy,什么都不变.为什么NSNumber类型的指针可以指向NSSring类型copy出的对象呢?因为copy返回类型为id万能指针类型.如果返回的是instancetype就会警告. 记住:对于不可变的临时变量使用浅复制copy没什么用,地址和值都一样. 2.怎么理解最后一句话?

iOS关二维码那些事

在 iOS7 以前,在iOS中实现二维码和条形码扫描,我们所知的有,两大开源组件ZBar与ZXing. 这两大组件我们都有用过,这里总结下各自的缺点: ZBar ZBar在扫描的灵敏度上,和内存的使用上相对于ZXing上都是较优的,但是对于 “圆角二维码” 的扫描确很困难.如: ZXing ZXing 是 Google Code上的一个开源的条形码扫描库,是用java设计的,连Google Glass 都在使用的.但有人为了追求更高效率以及可移植性,出现了c++ port. Github上的Ob

猫猫学iOS之二维码学习,快速打开相机读取二维码

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 上一篇文章写了怎么生成二维码,这儿就说说怎么读取吧,反正也很简单,iOS封装的太强大了 步骤呢就是这样: 读取二维码需要导入AVFoundation框架#import <AVFoundation/AVFoundation.h> 1:利用摄像头识别二维码中的内容(模拟器不行). 2:输入(摄像头). 3:由会话将摄像头采集到的二维码图像转换成字符串数据. 4:输