码迷,mamicode.com
首页 > 其他好文 > 详细

C8_指针

时间:2015-07-09 21:07:47      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:

.h

//

//  MyFunction.h

//  C8_指针

//

//  Created by dllo on 15/7/9.

//  Copyright (c) 2015年 zhozhicheng. All rights reserved.

//

 

#import <Foundation/Foundation.h>

// 声明一个结构体

typedef struct student{

    char stuName[20];

    float chinese;

    float english;

    float math;

    char stuNum[20];

}Student;

//找到五个人各学科的平均值

void avgScore(Student stu[],int count);

// 找到两门以上不及格的人数,并且打印对应的人成绩和学号

void prientNoPssStu(Student stu[],int count);

// 模拟一次投票过程,对四个人进行投票,投票之后对这四个人,根据票数从小到大进行排序

struct person{

    char personName[20];

    int num;        // 票数

    

};

typedef struct person  Person;

//投票

void vote(Person per[],int perNum);  //参与投票人数

void test(int *a);

//交换a和b的值,通过指针

void exchange(int *a,int *b);

 

int test1();

int test2();

 

 

 

 

 

.m

//

//  MyFunction.m

//  C8_指针

//

//  Created by dllo on 15/7/9.

//  Copyright (c) 2015年 zhozhicheng. All rights reserved.

//

 

#import "MyFunction.h"

//void avgScore(Student stu[],int count){

//    float chineseCount = 0;

//    for (int i =0; i<count; i++) {

//        chineseCount +=stu[i].chinese;

//        

//    }printf("%.2f\n",chineseCount / count);

//}

 

//void prientNoPssStu(Student stu[],int count){

//    

//    for (int i=0; i<count; i++) {

//        //

//        int num[3]={0};

//        int noPass = 0;

//        if (stu[i].chinese <= 60) {

//            noPass++;

//            num[1]=stu[i].chinese;

//            

//        }if (stu[i].math <= 60) {

//            noPass++;

//            num[2]= stu[i].math;

//        }if (stu[i].english <= 60 ) {

//            noPass++;

//            num[3]=stu[i].english;

//        }

//        if (noPass >= 2) {

//            for (int j=0; j<3; j++) {

//                if (num[j]>=0) {

//                    printf("%f",num[j]);

//                }

//            }

//        }

//        

//        }

//        

//}

 

        

//void vote(Person per[],int perNum){

//    for (int i =0; i<perNum; i++) {

//        char c = 0;

//        scanf("%c",&c);

//        switch (c) {

//            case ‘A‘:

//                per[0].num++;

//                break;

//            case ‘B‘:

//                per[1].num++;

//                break;

//            case ‘C‘:

//                per[2].num++;

//                break;

//            case ‘D‘:

//                per[3].num++;

//                break;

//             default:

////                printf("输入错误,无效\n");

//                perNum++;

//                break;

//        }

//    }

//}

 

        

//void test(int *a){

//    printf(".m里a的地址%p",a);

//    a += 20;

//}

//        

//        

//void exchange(int *a,int *b){

//    

//    int temp = 0;

//    temp = *a;

//    *a = *b;

//    *b =temp;

//}

 

        

int test1(){

    int g = 10;

    return g;

}

int test2(){

    int f;

    return  f;

}

        

 

    

    

    

    

 main.m

//

//  main.m

//  C8_指针

//

//  Created by dllo on 15/7/9.

//  Copyright (c) 2015年 zhozhicheng. All rights reserved.

//

 

#import <Foundation/Foundation.h>

#import "MyFunction.h"

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

//    Student stu1={"zhangsan",78.5,61.5,55,"11"};

//    Student stu2={"lisi",44,89,86,"13"};

//    Student stu3={"wangermazi",55.5,69.5,65,"14"};

//    Student stu4={"shenliu",89,89.5,56,"15"};

//    Student stu5={"tianqi",44,89,56,"16"};

//    Student stu[5]={stu1,stu2,stu3,stu4,stu5};

//    // 调取平均值的函数

//    avgScore(stu, 5);

    

//

//    int a=3;

//    for (int i=0; i<a; i++) {

//        if (i == 1) {

//            a++;

//        }printf("%d\n",i);

//    }

//    

//    Person per1 ={"zhansgan",0};

//    Person per2={"lisi",0};

//    Person per3={"wangwu",0};

//    Person per4={"shenliu",0};

//    Person per[4]={per1,per2,per3,per4};

//    vote(per,3);

//    for (int i=0; i<4; i++) {

//        printf("%d\n",per[i].num);

//    }

    

// 1.直接访问,直接通过变量名进行访问称为直接访问

// 2.匿名(间接)访问:通过门牌号,地址,一样访问到对应的数据,例如指针

//   

//    int a = 10;

    // 取址符

    

//    printf("%p",&a);

//    // 定义一个整型指针变量

//    int *p = NULL;

//    //int *是类型,p是变量名,NULL是初始值

//    printf("%ld",sizeof(int *));

//    // 在32位占4个字节,在64占8个字节

//    p=&a;

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

//    // 取值符

//    printf("%d\n",*&a);

//    *p += 20;

//    printf("%d",*p);

    

    

//    int c=10,b=5;

//    printf("%d\n",c+++b);

//    printf("%d",c);

    

//    int a = 10,b=20;

//    //通过指针方式让两个变量值发生变换

//    int *pa =&a;

//    int *pb=&b;

//    // 交换了指针的指向,虽然打印出来*pa的值变化,但是a还是10,并没有修改

//    int *temp=pa;

//    pa=pb;

//    pb=temp;

//    

//    int temp=0;

//    temp=*pa;

//    *pa=*pb;

//    *pb=temp;

//    printf("%d\n%d\n",*pa,*pb);

//    // 通过指针进行操作,交换的不是指针,而是地址所对应的值

    

//    int a=10;

//    int *p=&a;

//    int **p1=&p;

//    printf("%p\n",*p1);

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

 

 

//    int a = 10,b= 20,c = 30;

//    int arr[3]={a,b,c};

//    for (int i=0; i<3; i++) {

//        printf("%d\n",arr[i]);

//    }

//    

//    printf("%p\n",&arr[0]);

//    printf("%p\n",&a);

    

    

//    int arr[5]={1,2,3,4,5};

//    int *p =arr;

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

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

//    printf("%d\n",*p);

//    

 // 指针的算术运算

//    int a = 5, b = 10,c = 15,d = 20, e = 25;

//    int *pa = &c;

//    printf("%p\n",&a);

//    printf("%p\n",&b);

//    printf("%p\n",&c);

//    printf("%p\n",&d);

//    printf("%p\n",&e);

//    

//    printf("%p\n",(pa-2));

    

    

//    int arr[5]={3,2,1,4,5};

//    printf("%p\n",&arr[0]);

//    printf("%p\n",&arr[1]);

//    int *p =arr;

//    printf("%d\n",*(p+3));

//    // 语法糖:作用就是提高代码的可读性,并且简化代码

//    

//    for (int i = 0; i<5-1; i++) {

//        for (int j= 0; j<5-1-j; j++) {

//            if (*(p+j)>*(p+j+1)) {

//                int temp=0;

//                temp = *(p+j);

//                *(p+j)=*(p+j+1);

//                *(p+j+1)=temp;

//            }

//        }

//    }

    // 对指针的算术运算相当于控制指针跳转的方向,++向高位移动,--向低位移动,而类形控制每次跳几个字节,int 四个字节,

    

    

//    int a=10;

//    test(a);

//    printf("主函数a的地址=%p\n",&a );

//    printf("%d\n",a);

//    int a =19,b=20;

//    exchange(&a,&b);

//    printf("%d\n%d\n",a,b);

//    

//    char str[20]="1298456121";

//    strlen(str);

//    char *p = str;

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

//    printf("%c\n",p[1]);

//    for (int i=0; i<strlen(str); i++) {

//        printf("%c\n",p[i]);

//    }

    

    // 指针,计算字符串的长度,strlen

//    char str[20]="chajhggr";

//    char *p=str;

//    

//    int len =0;

//    for (int i=0; p[i] != ‘\0‘; i++) {

//        len++;

//    }

//    printf("%d\n",len);

    

//    int arr[2]={1,2};

    // 因为数组的名是第一个元素的首地址,这个地址是一个常量的地址

    

//char str1[20]="1545gfstwef";

//    char str2[20]="iphone";

//    strcpy(str1, str2);

//    for (int  i=0; i<20; i++) {

//        printf("%c",str1[i]);

//        

//    }printf("\n");

    

//    

//    int a =test1();

//    int b=test2();

//    printf("%d\n%d\n",a,b);

    

    //空指针

    int *p =NULL;

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    return 0;

}

 

C8_指针

标签:

原文地址:http://www.cnblogs.com/zhaozhicheng/p/4634048.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!