iOS学习笔记---c语言第九天
高级指针
指向结构体变量的指针,称为结构体指针
可以使用->指向内容。
%p打印地址
void pLenth(cPoint *p1,cPoint *p2)
//求两点间的距离 用的开方函数sqrt()和平方函数pow(,)
{
float a = sqrt(pow((p1->x-p2->x), 2)+pow((p1->y-p2->y), 2));
printf("两点距离为%.2f\n",a);
}
//main.m中代码
#import <Foundation/Foundation.h>
#import "Lesson.h"
#import "Cpoint.h"
int main(int argc, const char * argv[])
{ Student stu = {"xiao wang tou",,,'m'};
Student *p = &stu;
p->name[] -= ;//找到name第一个元素变大写
printf("%s\n",p->name);
//循环把空格字符变下划线
for (int i = ; i<strlen(p->name); i++) {
if (p->name[i]==' ') {
p->name[i]='_';
}
}
printf("%s",p->name);
// strcpy((*p).name, "xiaoliu");
// strcpy(p->name, "hello");
// printf("%lu %lu %s\nr",sizeof(stu),sizeof(p),(*p).name);
// printf("%p %p",&(p->name),p);
// Cpoint point1 = {1.25,2.36};
// Cpoint *q = &point1;
// printf("%.2f %.2f\n",q->x,q->y);//两种形式
// printf("%.2f %.2f",(*q).x,(*q).y);
// Cpoint point2[]={{5,6},{8,10}};
// Cpoint *r = point2;
// float num=sqrt((r->x-(r+1)->x)*(r->x-(r+1)->x)+(r->y-(r+1)->y)*(r->y-(r+1)->y));
// printf("%.2f",num);
// mysqrt(point2);
return ;
}
//Cpoint.h中代码
typedef struct cpoint{
float x;
float y;
}Cpoint;
void mysqrt(Cpoint point2[]);
//Cpoint.m中代码
#import "Cpoint.h"
void mysqrt(Cpoint point2[]){ Cpoint *r = point2;
float num=sqrt((r->x-(r+)->x)*(r->x-(r+)->x)+(r->y-(r+)->y)*(r->y-(r+)->y));
printf("%.2f",num);
}
//Lesson.h中代码
//创建一个学生的结构体
typedef struct student{
char name[];//姓名
int num; //学号
int age; //年龄
char sex; //性别
}Student;
结构体数组。
stu stus[3] = {0};
stu *p = &stus;
*(p+1).num 第二个学生的num
找出性别为男的学生,成绩加10,超过100写100
在student结构体中加score成员
//Lesson.h文件
typedef struct student{
char name[];//姓名
int num; //学号
int age; //年龄
char sex; //性别
float score; //分数
}Student; void manscore(Student *stud,int count);
//Lesson.m文件
//性别为男的学生成绩加10,如果超过100,成绩为100
void manscore(Student *stud,int count)
{
for (int i=; i<count; i++) {
if ((stud+i)->sex=='m') {
(stud+i)->score+=;
if ((stud+i)->score>=) {
(stud+i)->score=;
}
} printf("%.2f ",(stud+i)->score);
}
}
//主函数
Student arr[]={{"xiaoming",,,'m',},{"xiaobai",,,'f',},{"xiaoxiao",,,'m',}};
Student *p = arr;
// for (int i=0; i<3; i++) {
// if ((p+i)->sex=='m') {
// (p+i)->score+=10;
// if ((p+i)->score>=100) {
// (p+i)->score=100;
// }
// }
//
// printf("%.2f ",(p+i)->score);
// }
manscore(p, );
三、预编译指令
宏定义 实际开发中用的比较多
预编译时进行替换(编译前)
宏名命名规则: 纯大写 或者 k+驼峰
#define kMax 100
eg:MAX 或者 kMax
宏是符号常量不是变量 制作替换不做语法检查 后面没有分号;
带参数的宏
#define MUL(A,B) ((A)*(B))
#define kSum(A,B) A*B int main(int argc, const char * argv[])
{
int a = kSum(+,-);//3+5*6-3
printf("%d",a);//输出30
条件编译
作用:按不同的条件,编译不同的代码。
条件编译 有三种形式
1.#ifdef 标识符
代码段1
#else
代码段2
#endif
//如果定义了宏AAA
#ifdef AAA
printf("这段代码被编译");
#else
printf("这段代码才被编译");
#endif//编译结束以#endif结束
2.#ifndef 标识符
代码段1
#else
代码段2
#endif
3.#if 常量表达式
代码段1
#else
代码段2
#endif
iOS学习笔记---c语言第九天的更多相关文章
- iOS学习笔记---oc语言第九天
初级内存管理 iOS应用程序出现crash(闪退),90%以上是内存问题////其他:数组越界,方法只声明没实现 内存问题体现在两个方面:内存溢出\野指针异常 内存溢出:程序运行超出内存上限 野指针异 ...
- IOS学习笔记07---C语言函数-printf函数
IOS学习笔记07---C语言函数-printf函数 0 7.C语言5-printf函数 ------------------------- ----------------------------- ...
- IOS学习笔记06---C语言函数
IOS学习笔记06---C语言函数 -------------------------------------------- qq交流群:创梦技术交流群:251572072 ...
- iOS学习笔记---oc语言第一天
第一讲 初始类和对象 c语言的超集,允许在oc中使用c语言源代码.编译器兼容c语言程序 具备完善的面向对象特性 包含一个运行时系统 类库丰富 面向对象编程 oop 面向对象语言:c++ java ...
- iOS学习笔记---c语言第八天
指针 首先将变量a的地址存放在另一个变量中,比如存放在变量b中,然后通过变量b来间接引用变量a,间接读写变量a的值.用来存放变量地址的变量,就称为"指针变量" int *p=nul ...
- iOS学习笔记---oc语言第六天
Block .数组高级 block本质上就是匿名函数(没有名称的函数) block语法和函数指针很相似 回顾函数 函数:C语⾔中,实现某一类功能的代码段. 完整的函数包含两部分:函数声明.函数定义 函 ...
- iOS学习笔记---oc语言第五天
字典,数组 ,集排序 一.字典类 存储以下数据 name:张三; sex:男;age:18 film:风暴; playcount:10000次;price:60元 字典类用于保存具有映射关系(key- ...
- iOS学习笔记---oc语言第四天
字符串 数组 一.使用苹果帮助文档 学会使⽤用苹果帮助⽂文档是开发者的⼀一项技能 Inherits from 继承⾃自 Conforms to 遵循什么协议 Framework 属于哪个框架 Avai ...
- iOS学习笔记---oc语言第三天
继承.初始化方法 一.继承 继承的上层:父类 继承的下层:子类 继承是单向的,不能相互继承 继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和行为 子类能继承父类全部的特征和行为(私有变量 ...
随机推荐
- MyEclipse10.X 的破解过程详细图解
http://wenku.baidu.com/view/423e95056c85ec3a87c2c512.html
- jsm使用
参考:http://blog.csdn.net/robinjwong/article/details/38820259
- Android——关于Activity跳转的返回(无返回值和有返回值)——有返回值
说明: 跳转页面,并将第一页的Edittext输入的数据通过按钮Button传到第二页用Edittext显示,点击第二页的 返回按钮Button返回第一页(改变第二页的Edittext的内容会传至第一 ...
- iOS 登陆的实现四种方式
iOS 登陆的实现四种方式 一. 网页加载: http://www.cnblogs.com/tekkaman/archive/2013/02/21/2920218.ht ml [iOS登陆的实现] A ...
- Xcode连接git@osc
Xcode 已经集成了git,建立新项目时钩选使用git,然后按照下面步骤让Xcode和git@osc 建立连接. 第一步:成生SSH密钥 打开终端命令工具,输入命令:ssh-keygen -t rs ...
- hdu 4612 Warm up
http://acm.hdu.edu.cn/showproblem.php?pid=4612 将原图进行缩点 变成一个树 树上每条边都是一个桥 然后加一条边要加在树的直径两端才最优 代码: #incl ...
- WCF中常见的几种Host,承载WCF服务的方法
1:写在前面 我们都知道WCF在运行的时候必须自己提供宿主来承载服务.WCF 本身没有附带宿主,而是提供了一个 ServiceHost 的类,该类允许您在自己的应用程序中host WCF 服务.然后调 ...
- 基于MVC的应用框架之Struts前奏
1.JSP&Servlet中的MVC MVC的关键是,业务逻辑要与表示分离.通过把业务逻辑放在一个“模型”中,这样业务逻辑本身就能作为一个可重用的JAVA类存在. 在JSP&Servl ...
- Problem B 队列
Description Two bored soldiers are playing card war. Their card deck consists of exactly n cards, nu ...
- ModuleWorks免费下载使用方法大全
ModuleWorks为模拟机器的工具运转及(或)机床和车床材料的搬运提供了一整套解决方案. 模拟技术可以识别潜在的碰撞问题,允许在NC代码生成前进行除错检查,并且渐渐成为CAM处理方面必不可少的解决 ...