IOS学习之路-- 指针&宏函数
- 如果*p被()包住,说明指针变量p将来指向的是函数
//声明一个指针变量
//int (*p)(int, int) = sum;
int (*p)(int, int);
p = sum; // 如果*p被()包住,说明指针变量p将来指向的是函数 // 最左边的void说明p指向的函数没有返回值
// 最右边的()说明p指向的函数没有形参
void (*p)(); // 函数名test就是test函数的地址
// 将test函数的地址赋值给了指针变量p
// 指针变量p成功指向了test函数
p = test; // 利用指针变量p间接调用了test函数
//(*p)(); //test();
p();
- 结构体占用的空间大小
默认情况下,一个结构体变量所占有的存储空间是所有成员的总和。
sizeof计算的结构体所占用存储空间时,返回的值必须是最大成员的倍数。
- 结构体的省略写法
省略了结构体的名称,这种方法没有重用性。
在结构图的最后加入的内容是 同时定义的变量。
struct
{
double width;
double height;
} s;
注意: 如果想给结构体使用{}的方式一次性赋值,只能在定义变量的同事进行。
- 结构体作为函数参数时,只是成员的值传递(修改函数内部的结构体,并不影响外面的结构体)
struct Person {
int age;
}; // 这种方式是值传递, 不会真的改变nochange的值
void changePersonWithAge1(struct Person nochange) {
nochange.age = ;
} // 这种传递的是指针,指针指向同一个内容,可以真正改变
void changePersonWithAge2(struct Person *change) {
// (*change).age = 100;
change->age = ; // 等价于上面那行。
} int main()
{
struct Person p1 = {};
// changePersonWithAge1(p1);
changePersonWithAge2(&p1); // 引用传递,要传递指针 printf("%d\n", p1.age); }
- 宏定义:
#define 宏名 值
#undef 宏名
作用:宏替换,在翻译之前,将代码中的所有宏名都替换成对应的值。
宏名最好都用大写,跟函数区分开。可以使用在任何地方(代码段中,头部,任何地方)
// 带参数的宏定义
// 宏替换只是纯粹的文本替换,把左边的宏换成右边的东西,并不会进行任何运算
// 参数和结构都必须用()包住
#define PING_FANG(x) ((x)*(x))
- 预处理指令
不能递归包含: 自己包含自己,a.h include a.h
不能交叉包含:a.h incldue b.h, b.h include a.h
防止.h的文件内容被包含多次。用预处理命令。 文件名用A_H的方式来定义。
#ifndef 文件名
#define 文件名 ..文件内容.. #endif
- typedef 起别名
typedef int Myint
typedef char * String1
struct Person {
int age;
}; // 给结构体类型起个别名 :Stu
typedef struct Person Student; // 此结构类似与上面的内容。 是上面两行的缩写
typedef struct Dog {
int age
} WangCai;
- 指针的使用范围
需要间接的修改某个变量的值。
IOS学习之路-- 指针&宏函数的更多相关文章
- IOS开发---菜鸟学习之路--(二十二)-近期感想以及我的IOS学习之路
在不知不觉当中已经写了21篇内容 其实一开始是没有想些什么东西的 只是买了Air后 感觉用着挺舒服的,每天可以躺在床上,就一台笔记本,不用网线,不用电源,不用鼠标,不用键盘,干干脆脆的就一台笔记本. ...
- 浅谈iOS学习之路(转)
转眼学习iOS已经快两年的时间了,这个路上有挫折也有喜悦,一步步走过来发现这个过程是我这一辈子的财富,我以前的老大总是对我说,年轻就是最大的资本(本人91年),现在才算是慢慢的体会到,反观自己走过的这 ...
- 浅谈iOS学习之路
转眼学习iOS已经快两年的时间了,这个路上有挫折也有喜悦,一步步走过来发现这个过程是我这一辈子的财富,我以前的老大总是对我说,年轻就是最大的资本(本人91年),现在才算是慢慢的体会到,反观自己走过的这 ...
- IOS学习之路--OC的基础知识
1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch框架 3.Xcode使用 -------------------- CocoaTouc ...
- 纪录我的iOS学习之路
学习资料的网址 田伟宇(Casa Taloyum)有几篇介绍iOS架构的文章,一级棒!原博客链接. iOS应用架构谈 开篇 iOS应用架构谈 view层的组织和调用方案 iOS应用架构谈 网络层设计方 ...
- 我的IOS学习之路(三):手势识别器
在iOS的学习中,对于手势的处理是极为重要的,如对于图片,我们经常需要进行旋转,缩放以及移动等.这里做一下总结,详见代码. - (void)viewDidLoad { [super viewDidLo ...
- iOS学习之路十三(动态调整UITableViewCell的高度)
大概你第一眼看来,动态调整高度是一件不容易的事情,而且打算解决它的第一个想法往往是不正确的.在这篇文章中我将展示如何使图表单元格的高度能根据里面文本内容来动态改变,同时又不必子类化UITableVie ...
- ios学习之旅---指针也不难
1.认识指针 #include <stdio.h> //基本数据类型作为函数參数传递是值传递 //void moveFront(int x ,int y) //{ // x = x + 2 ...
- IOS学习之路七(使用 Operation 异步运行任务)
在 application delegate 头文件(.h)中声明一个 operation 队列和两个 invocation operations: #import <UIKit/UIKit.h ...
随机推荐
- list如何remove 特别容易出错
java中对list进行操作很频繁,特别是进行list启遍历,这些操作我们都会,也很熟悉,但是对java中list进行删除元素,remove list中的元素就不怎么熟悉了吧,可以说很陌生,是实际操作 ...
- ios系统下,html5拍照上传的压缩处理
http://gokercebeci.com/dev/canvasresize 通过canvas和base64的处理方式实现大尺寸照片的压缩和上传 介绍: https://github.com/zev ...
- HBase(二): c#访问HBase之股票行情Demo
上一章完成了c#访问hbase的sdk封装,接下来以一个具体Demo对sdk进行测试验证.场景:每5秒抓取指定股票列表的实时价格波动行情,数据下载后,一方面实时刷新UI界面,另一方面将数据放入到在内存 ...
- 导出resource文件的的资源
写个小工具,方便一次性将resource文件中的资源导出,不然反编译后一个个找,真是太麻烦了. using System;using System.Collections.Generic;using ...
- js封常用类
ajax刷 下拉框联动 /*基础初始化类*/ $.EBC = { setCourse:function(obj){ $(obj).empty(); $.get('../Index/getCoursei ...
- ASP.NET动态加载Js代码到Head标签中(三种方法)
方法一代码如下: HtmlGenericControl Include2 = new HtmlGenericControl("script"); Include2.Attribut ...
- 使用 Override 和 New 关键字进行版本控制
使用 Override 和 New 关键字进行版本控制 C# 语言经过专门设计,以便不同库中的基类与派生类之间的版本控制可以不断向前发展,同时保持向后兼容. 这具有多方面的意义.例如,这意味着在基类中 ...
- 黄聪:360浏览器、Chrome调试(debugger)JS总是进入paused in debugger状态
在通过Chrome浏览器进行web前端开发时,我们会经常用到Chrome自带的debugger工具,但是经常按完快捷键(F12)后,页面会进入paused in debugger状态,需要点击右上角的 ...
- Hive架构及Hive On Spark
Hive的所有数据都存在HDFS中. (1)Table:每个表都对应在HDFS中的目录下,数据是经过序列化后存储在该目录中.同时Hive也支持表中的数据存储在其他类型的文件系统中,如NFS或本地文件系 ...
- [实变函数]5.6 Lebesgue 积分的几何意义 $\bullet$ Fubini 定理
1 本节推广数学分析中的 Fubini 定理. 为此, 先引入 (1)(从低到高) 对 $A\subset \bbR^p, B\subset\bbR^q$, $$\bex A\times B=\sed ...