//// main.m// LessonPointerPro//// Copyright (c) 2015年 池海涛. All rights reserved.//#import#import "Function.h"#define PI 3.1415926#define kMul(A,B) (A)*(B)////条件编译////形式1//#ifdef PI//#define kPPPI 0//#else//#define kPPPPI 1//#endif//////形式2//#ifndef kP////#define kP 3////#else////#define kP 4////#endif//////形式3//#if 0////#define kRong 0////#else////#define kRight 1////#endif//预编译指令//以#开头的叫预编译指令:预编译时期做一些文本及代码的替换工作//PI 代表宏名,3.14是预编译时期会被替换的内容int main(int argc, const char * argv[]) {// //指针,指针变量// int a = 10;// int b = 6;// change(&a,&b);// //指针与函数// //练习:交换两个数的值// printf("a = %d,b = %d",a,b); /** * int a[5] = {0}; int count = sizeof(a) / sizeof(a[0]); getArray(a,count); */ // char strArray[4][20] = {"iPhone", "iPad", "ipod", "iWatch"}; //指针数组 /** * 字符串 char *strPinter[4] = {"iPhone", "iPad", "ipod", "iWatch"}; printStr(strPinter,4); sortStrArray(strPinter,4); printStr(strPinter,4); */ //指针数据类型:Student * //指针变量 :P //初值:&student,存储的是student的地址 //指针变量 p 所占的字节: 8个字节//// Student student = {"chihaitao",'m',23,100};// // Student *p = &student; //通过指针访问结构体成员 /** * *p 相当于student结构体变量 */// printf("%s \n",student.name);// // printf("%s \n",(*p).name); /** * 方式2 CPoint c1 = {4,5}; CPoint c2 = {7,1}; CPoint *p1 = &c1; CPoint *p2 = &c2; printf("%f ", qiujuli(p1,p2)); // printf("%s \n",p->name);//通过指针,直接进行访问, ->指向操作符 //使用->输出结构体变量student中的所有成员变量 */ /** * <#Description#> Student student = {"chihaitao",'m',23,100}; Student stuArray[5] = { {"chichi",'m',25,99}, {"haihai",'w',22,98}, {"taotao",'w',23,97}, {"niuniu",'w',22,98}, {"bibi",'w',23,97}, }; //->就是指针操作 (指针)->(结构体成员) Student *stu = stuArray; //字符串不能直接赋值,字符串指针能赋值 (stu+4)->name = "fengfeng"; (stu+1)->age = 120; printf("%s",(stu + 4)->name); printf("%d",(stu+1)->age); printf("%d",stuArray[4].age); //printf("%s",m1->name); printf("%f",stu[4].score); printf("%p",(stu + 4)); printf("%p",&stuArray[4]); //按学生年龄升序排列 for (int i = 0; i < 5 -1; i++) { for (int j = 0;j < 5 - 1 - i; j++) { if ((stu + j)->age > (stu+j + 1)->age) { Student temp = *(stu + j); *(stu + j) = *(stu + j + 1); *(stu + j + 1)=temp; } } } */ //定义宏 //普通宏 //PI 代表宏名 int mul = kMul(3 + 1, 5); printf("mul = %d\n",mul); /** * 宏与函数的区别 1.宏是在预编译时期进行替换的内容,不进行任何的逻辑检测,只是简单的赋值而已,运行速度比函数快 2.宏定义十不考虑参数的类型 3.参数宏在定义时记得多加括号 4.参数宏在使用时会再目标文件中村在多个副本,会增加目标文件的大小 */#ifdef PI //如果定义了 PI printf("PI已经定义过了\n");#else printf("PI没有定义\n");#endif#ifndef PI //如果没有定义 PI printf("PI这个宏没有定义\n");#else printf("早就定义过了\n");#endif #if 1 //和条件判断if else 用法一样 printf("优衣库被查了");#else printf("你说啥 听不懂\n");#endif return 0;}
//--------Function.h
//// Function.h// LessonPointerPro//// Created by laouhn on 15/7/27.// Copyright (c) 2015年 池海涛. All rights reserved.//#importstruct student{ char *name; char sex; int age; float score;};typedef struct student Student;typedef struct{ char *name; char sex; int age; float score;} Student1;struct cpoint{ float x; float y;};typedef struct cpoint CPoint;void change(int *,int *);void getArray(int *,int);void print(int *,int);void sortArray(int *,int);void printStr(char *[],int);void sortStrArray(char *[],int);float qiujuli(CPoint *,CPoint *);
//Function.m
//// Function.m// LessonPointerPro//// Created by laouhn on 15/7/27.// Copyright (c) 2015年 池海涛. All rights reserved.//#import "Function.h"void change(int *a,int *b){ int temp = *a; *a = *b; *b = temp;}void getArray(int *p,int count){ for (int i = 0; i < count; i++) { *(p + i) = arc4random() % (100 - 10 + 1) + 10; } print(p,count); sortArray(p, count); print(p, count);}void print(int *a,int count){ for (int i = 0; i < count; i++) { printf("%d ",*(a+i)); } printf("\n");}void sortArray(int *a,int count){ for (int i = 0; i < count - 1; i++) { for (int j = 0; j < count - i -1; j++) { if (*(a + j) > *(a + j + 1)) { int temp = *(a + j); *(a + j) = *(a + j +1); *(a + j + 1) = temp; } } }}void printStr(char *b[],int count){ for (int i = 0; i < count; i++) { printf("%s ",*(b + i)); }}void sortStrArray(char *str[],int count){ for (int i = 0; i < count - 1; i++) { for (int j = 0; j < count - 1 - i; j++) { if (strcmp(str[j],str[j + 1] ) > 0) { char *temp = str[j]; str[j] = str[j + 1]; str[j + 1] = temp; } } }}float qiujuli(CPoint *a,CPoint *b){ float x = fabsf(a->x - b->x); float y = fabsf(a->y - b->y); return sqrtf(x*x + y*y);}