我的iOS学习历程 - 第九天

#import <Foundation/Foundation.h>

今天主要讲的是高级指针


typedefstruct LStudent{

    int number;

    char name[50];

    char sex;

    float score;

}LStudent;

void Change(LStudent *p);

//********************************************


typedefstruct Student {

    char name[50];

    char sex;

    int age;

    float score;

}Student;


void printfMessage(Student *p);

//********************************************


typedefstruct CPoint {

    float x;

    float y;

}CPoint;

void Distance(CPoint *p1,CPoint *p2);


void pStudent(Student *p,int count);


void PlusSudent(Student *p,int count);


//********************************************

#import "Function.h"



void printfMessage(Student *p){

    

    printf("%s ",p->name);

    printf("%c ",p->sex);

    printf("%d ",p->age);

    printf("%.2f\n",p->score);

}

//********************************************

void Distance(CPoint *p1,CPoint *p2){

    

    printf("dis = %f",fabsf(sqrtf((p1->x - p2->x) * (p1->x - p2->x) + (p1->y - p2->y) * (p1->y - p2->y))));

                

}

//********************************************

void Change(LStudent *p){

     p->name[0] = p->name[0] - 32 ;

    int n =0;

    while ( p->name[n] !='\0') {

        if (p->name[n] ==' ') {

            p->name[n] ='_';

        }

        n++;

        

    }

   


#import <Foundation/Foundation.h>

#import "Function.h"

//  宏定义

#define WL 1

#define kMaxValue(A,B) ((A) > (B) ? (A) : (B))

//  命名规范:

//  1.以小写k开头后面驼峰 编写宏定义

//  2.所有字母全大写



//  计算两个数的最小值

//  一般宏定义的参数都是以大写来写

#define kMinValue(A,B) ((A) < (B) ? (A) : (B))

//  带参数的宏定义:替换的过程

//  带参数的宏定义:参数使用什么名字 后面使用参数的时候名字要一致


#define PI 3.14



                 主函数


int main(int argc,const char * argv[]) {

    判断宏定义之前有没有定义过

#ifdef WL

    printf("这个宏定义已经定义了");

#else

    printf("这个宏定义没有定义");

#endif


********************************************

    #ifdef PI

    // 计算圆面积

#define AERS(R) PI * (R) * (R)

#else

#define AERS(R) 3.14 * (R) * (R)

#endif

********************************************

#ifndef PI

    // 跟第一种形式正好相反

#define AERS(R) 3.14 * (R) * (R)

#else

#define AERS(R) PI * (R) * (R)

#endif

//********************************************

    

#if 1

    printf("真的就执行这里");

#else

    printf("假的就执行这里");

#endif

//********************************************

    

    int a =3;

    int b =4;

    int max =kMaxValue(a, b);

    int min =kMinValue(a, b);

    printf("%d\n",min);

 

      需求:

      1.创建一个学生类

      2.声明一个结构体成员变量 名字性别 年龄分数

      3.在主函数中声明一个结构体变量

    Student stu1 = {"Allen",'m', 18,82.3};

    Student *p = &stu1;

    printf("%s\n",stu1.name);

      (*p).name

      *p取出指针所指向的位置保存的值

    printf("%s\n",(*p).name);

      结构体指针中 经常使用 -> 指向符

    printf("%s\n",p->name);

    

      需求 :编写函数 打印所有的成员变量

    

    printfMessage(p);

    printf("%p\n",p);

    printf("%p\n",&stu1);

    printf("%p\n",&stu1.name);

    printf("%p\n",&stu1.sex);

      结构体指针指向结构体变量 就相当于指向结构体变量第一个 成员变量

    

    定义⼀个点坐标的结构体CPoint,包含两个float成员x,y。定义两个CPoint结构体变量m,n,使⽤两个结构体指针分别指向m,n,然后通过指针计算两点距离(提⽰:1、勾股定理,2、开⽅函数sqrt

    

    CPoint m = {0,0};

    CPoint n = {4,3};

    CPoint *p1 = &m;

    CPoint *p2 = &n;

    Distance(p1, p2);

    

    student stu = {1,”lan ou”,’m’,95.6}; student * p = &stu;请通过pname成员中的第⼀个字⺟改成⼤写,所有’ ‘(空格)改成下划线’_’

    

    LStudent stu = {1,"lan ou",'m',95.6};

    LStudent *p = &stu;

    Change(p);

    printf("%s",p->name);

    

     声明三个学生结构体变量

     声明一个结构体数组保存三个学生

    Student stu1 = {"Paul",'m', 17,88.8};

    Student stu2 = {"James",'m', 18,92.8};

    Student stu3 = {"Ivring",'w', 19,84.8};

      结构体指针地址+1相当于加了一个该结构整个的字节数 (按最大字节补齐)

    

      声明一个结构体数组保存三个学生

    Student stus[3] = {stu1, stu2, stu3};

    

    Student *p = stus;

    printf("%p",p);

      结构体指针指向 结构体数组相当于 指向结构体数组的首元素

     printf("%p",&stus[0]);

    

      如何利用指针取出数组中的元素

    printf("%c",(*(p +1)).sex);

    printf("%c",(p +1)->sex);// 推荐!

    

      编写函数利用指针打印结构体数组的每一个学生

    pStudent(p, 3);

    使⽤指针查找学员数组中性别为男的学员,成绩增加10,超过100分的记为100

    

    PlusSudent(p, 3);


 

    

    return0;

}


posted on 2015-10-20 17:07  彩虹直至黑白  阅读(90)  评论(0)    收藏  举报

导航