ios开发之c语言基础-结构体经典题目

//

//  main.m

//  C8-指针

//

//  Created by dllo on 15/10/15.

//  Copyright (c) 2015 dllo. All rights reserved.

//


#import <Foundation/Foundation.h>

#import "student.h"


//指针作为数组参数

//void test(int *p)

//{

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

//    *p = 5;

//}

//冒泡排序指针实现

//void maopao(int *k, int count)

//{

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

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

//            if (*(k + l) > *(k + l + 1)) {

//                int  b = k[l];

//                k[l] = *(k + l  + 1);

//                *(k + l + 1) = b;

//            }

//        }

//    }

//}

//

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

//

//

//    int a = 0;

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

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

//

    

    //定义一个指针类型的变量

    //变量类型 变量名 初值

  //  int *p = NULL;

    

    //指针基础使用最重要的两个符号: * &

    // * - 取值运算符

    //& - 取址运算符

    

    

  //  int a = 5;

    //通过指针访问

    //指针指向空间 - 本质就是指针的空间存了a的地址值

  //  p = &a;

    

    //通过指针访问所指向空间中的元素值

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

    

    //练习

//    float a = 4.5;

//    float  *b = NULL;

//    b = &a;

//    printf("%f ",*b);

//    

////

//    int a = 5;

//    int b = 7;

//    int *p1 = NULL;

//    int  *p2 = 0;

//    p1 = &a;

//    p2 = &b;

//    

//    int c = 0;

//    int *temp = NULL;

//    temp = &c;

//    *temp = *p1;

//    *p1 = *p2;

//    *p2 = *temp;

//    

//    printf("%d %d",*p1,*p2);

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

    

//    

//    int a = 0;

//    int b = 0;

//    int c = 0;

//    scanf("%d%d%d",&a, &b, &c);

//    int *p1 = NULL;

//    int *p2 = NULL;

//    int *p3 = NULL;

//    p1 = &a;

//    p1 = &b;

//    p1 = &c;

//    int max = *p1 > *p2 ? * p1 : *p2;

//    max = max > *p3 ? max : *p3;

    

//    

//    int a = 0;

//    int b = a;

//    printf("b1= %d",b);

//    scanf("%d",&a);

//    printf("b2= %d",b);

//    

//    

//     int a = 0;

//    int *p1 = NULL;

//    p1 = &a;

//    printf("p1= %d",*p1);

//    scanf("%d",&a);

//    printf("p2= %d",*p1);

    

    //定义和使用在一起,int *p = &a;

    

    //指针的加减就是位移

    

//    int *p1 = NULL;

//    char *p2 = NULL;

//    printf("%ld ",sizeof(p1));

//    printf("%ld ",sizeof(p2));

    //指针是用来存地址的,为了保证能够存下最大的地址.系统有自己的位宽64位或者32,硬件也有自己的位宽64位或者32,指针的大小跟系统有关,跟硬件无关

    //在同一个系统中,不同类型的指针占内存大小相同,64位下都占8个字节

    

    //不同类型的指针的意义

    //1 *p所见范围不同

    //2,p++移动大小不同

    

    

    

//    int a = 256;

//    char *p = &a;

//    p++;

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

    

    

    //指针和数组的关系

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

//    int *p = NULL;

//    

    //指针指向数组首地址

  //  p = a;

  //  p = &a[0];

    

    //指向数组中的其他元素

   // p++;

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

    

    

//    

//    printf("%d ",p[1]);

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

//     printf("%d ",*(a + 1));

//    

//    

    

    //记住2个本质,第一个语法糖(数组本不存在,a[4]实际上是一个首地址加上4个偏移量),c语言中所有的操作都是通过地址操作来实现的

    //第二个 变量,是地址所指向的空间.

    

    //数组名字是常量不可以改变

    //练习通过指针对数组进行冒泡排序

    

//    int a[5] = {54, 34, 65, 434, 67};

//    int *p = a;

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

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

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

//                int b =*(p + j);

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

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

//            }

//        }

//    }

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

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

//    }

    //通过指针可以计算字符串的长度

    //编程实现

//    char b[6] = "yuhao";

//    char *p1 = b;

//    int count = 0;

    //遇到''退出循环

//    while (*p1 != '') {

//        count++;

        //计数加1

       // p1++;

        //指针移动访问后一个元素

//    }

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

//

//    

//    int a = 6;

//    test(&a);

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

//    int  a[5] = {1,34,55,64,432};

//    maopao(a, 5);

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

//        printf("%d ",a[i]);

//    }

    //指针数组

//    int * p[2000] = {NULL};

//    


    

    

    

//昨天的限时代码

//    student stu[6] = {

//        {"yuhafo", "female", 22, 99},

//        {"yuhfsao", "female", 22, 98},

//        {"lijin", "man", 23, 94},

//        {"wangqi", "man", 24, 93},

//        {"sunyunpu", "man", 23, 99},

//        {"zhouyou", "man", 34, 99}

//    };

//    pointstrarray(stu, 6);

//    sortstrarray(stu, 6);

//    pointstrarray(stu, 6);


//  1.  (**)编写一个函数,交换2个浮点数。

//    

//    1. (***)在主函数中输入6个字符串(二维数组),对他们按从小到大的顺序,然后输出这6个已经排好序的字符串。要求使用指针数组进行处理。

//    

//    2. (****)面试题:

//    有一字符串中包含数字与字符,请编程去除数字

//

//    

//    

    

//    float a = 5.8;

//    

//    

//    float b = 8.0;

// 

//    change(&a, &b);

//    

//    char arr1[] = "yuhadjad2312jlsdhasdl";

//

//    

//    removenumber(arr1);

//    char arr1[30] = "aaasfff";

//    char arr2[10] = "afa";

//    copystrcat(arr1, arr2);

    //printf("%s",arr1);

//    copystrcmp(arr1,arr2);

   // copystrcpy(arr1, arr2, 30);

    

    

    

    

    

    

    

    

    

    

    

    return 0;

}



原文地址:https://www.cnblogs.com/yuhaojishuboke/p/5043134.html