iOS 학습 노트---c 언어 9일차

14037 단어 학습 노트
고급 포인터
 
구조체 변수를 가리키는 바늘을 구조체 바늘이라고 한다
 
->을(를) 사용하여 컨텐트를 가리킬 수 있습니다.
%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", 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",18,32,'m'};

    Student *p = &stu;

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

    printf("%s
",p->name); // for (int i = 0; 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
r",sizeof(stu),sizeof(p),(*p).name);
// printf("%p %p",&(p->name),p); // Cpoint point1 = {1.25,2.36}; // Cpoint *q = &point1; // printf("%.2f %.2f
",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 0; } //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+1)->x)*(r->x-(r+1)->x)+(r->y-(r+1)->y)*(r->y-(r+1)->y)); printf("%.2f",num); } //Lesson.h // typedef struct student{ char name[20];// int num; // int age; // char sex; // }Student;

 
구조체 배열.
stu stus[3] = {0};
stu *p = &stus;
*(p+1).두 번째 학생의num
성별을 남자 학생으로 찾아내 성적 증가 10, 100 초과 100
student 구조체에 score 멤버를 추가합니다.
 
//Lesson.h  

typedef struct student{

    char name[20];//  

    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=0; i<count; i++) {

        if ((stud+i)->sex=='m') {

            (stud+i)->score+=10;

            if ((stud+i)->score>=100) {

                (stud+i)->score=100;

            }

        }

        

        printf("%.2f ",(stud+i)->score);

    }

}

//   

   Student arr[3]={{"xiaoming",1,18,'m',95},{"xiaobai",2,20,'f',90},{"xiaoxiao",3,19,'m',56}};

    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, 3);

 
3. 사전 컴파일 명령
매크로 정의는 실제 개발에 사용되는 것이 비교적 많다
미리 컴파일할 때 바꾸기 (컴파일하기 전)
매크로 이름 규칙: 순수한 대문자 또는 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);//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

좋은 웹페이지 즐겨찾기