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 ...
随机推荐
- 如何进行oracle capability i/o(压力测试数据库服务器i/o性能)
一 .oracle 有关 IO 信息的相关统计函数 Oracle i/o stack包含hbas,存储相关的交换机.存储物理磁盘.那么oracle建议在应用程序部署的时候,建议去验证i/o避免存在问题 ...
- flume ng 问题点
1. 启动Flume,出现脚本错误 错误如下: bin/flume-ng: line 82: syntax error in conditional expression: unexpected to ...
- MockMultipartFile
org.springframework.mock.webClass MockMultipartFile java.lang.Object org.springframework.mock.web.Mo ...
- PHP 开发环境配置
使用phpStudy +Zend Studio 使用phpStudy +Zend Studio ,这个组合是我个人使用的比较好的,现在分享出来.一.phpStudy简体中文版 该程序包集成最新的Apa ...
- 转载:mybatis自动生成
MyBatis Generator中文文档 MyBatis Generator中文文档地址: http://generator.sturgeon.mopaas.com/ 该中文文档由于尽可能和原文内容 ...
- Bouncycastle中的RSA技术以及解决之道
一个使用bouncycastle进行安全操作的实用类 2007-04-13 12:54 import java.io.*;import java.security.*;import java.secu ...
- android学习笔记28——Activity生命周期
Activity生命周期 Activity的活动状态由android已Activity栈的形式管理,当前活动的Activity位于栈顶.随着不同应用的运行,每个Activity都有可能从活动状态转入非 ...
- 从官方下载 Bootstrap 版本 并写 第一个页面
从官方下载 Bootstrap 版本 页面内容参考自 http://www.cnblogs.com/sanjuantianshu/p/3935120.html bootstrap-3.2.0.zip ...
- 使用eclipse和maven创建activiti项目基础配置
项目组最近的项目使用到了activiti工作流,到处查找了一些资料后,初步完成任务.但是我所做的事只是在搭好的环境中调用接口和方法操作,因此自己尝试着也从搭建环境入手,以下是成功实现以后的记录. 实现 ...
- Html4与Html5的关键区别
HTML5是下一代HTML标准版本,4与5有很多相同之处,有HTML从头构建,比4升级到5要方便. 以下是10个关键区别: 1.HTML5最近很火,但是标准还在制定,4则十年之多了,不会6变: 2.简 ...