2016年4月

字符串的小练习

//
//  main.c
//  字符串函数练习
//
//  Created by admin on 16/3/31.
//  Copyright © 2016年 jin. All rights reserved.
//

#include <stdio.h>
// 字符串拷贝
void test1(char * dest, const char * src)
{
    int i = 0;
//    printf("%s\n",src);
    while (1) {
        if(src[i] == '\0')
        {
            dest[i] = '\0';
            break;
        }
        dest[i] = src[i];
        i++;
    }
}
// 字符串拷贝
char * test2(char * dest, const char * src)
{
    //    printf("%s\n",src);
    char * temp = dest;
    // 如果不是结束就继续运行
    while (*src != '\0') {
//            printf("%c\n",*src);
        // 赋值
        *dest = *src;
        // 指针位置后移
        dest++;
        src++;
    }
    // 添加结束符
    *dest = '\0';
    return temp;
}
// 字符串拷贝
char * test3(char * dest, const char * src)
{
    //    printf("%s\n",src);
    char * temp = dest;
    // 完成赋值并移动指针地址
    while ((*dest++ = *src++));
//    *dest = '\0';
    return temp;
}
// 字符串拼接
char * test4(char * dest, const char * src)
{
    //    printf("%s\n",src);
    char * temp = dest;
    // 把指针移动到 \0
    while (*++dest != '\0');
    // 字符串替换
    while ((*dest++ = *src++));
    // 回到开始的地址
    dest = temp;
    return dest;
}
// 字符串比较
int test5(const char * str1, const char * str2)
{
    /**
    while (*str1 != '\0' || *str2 != '\0')
    {
        if (*str1 > *str2) {
            return 1;
        }
        if (*str1 < *str2) {
            return -1;
        }
        str1++;
        str2++;
    }
    // 回到开始的地址
    return 0;
     */
    while (*str1 == *str2 && *str1 != '\0')
    {
        str1++;
        str2++;
    }
    return (*str1 - *str2);
}
int main(int argc, const char * argv[]) {

    /**
     字符串比较
     char str1[] = "swift";
     char str2[10];

     printf("%s\n",str2);
     test1(str2, str1);
     printf("%s\n",str2);
     printf("%s\n",str1);
     return 0;

     char str1[] = "swift";
     char str2[10];

     printf("%s---1\n",str2);
     test3(str2, str1);
     printf("%s---2\n",str2);
     printf("%s---1\n",str1);

     */
    /**
     字符串替换
    char str1[] = "swift";
    char str2[10] = "php";
    test4(str2, str1);
    printf("%s---2\n",str2);
     */
    char str1[] = "casdasd";
    char str2[10] = "casdase";
    printf("%i\n",test5(str1, str2));
    return 0;
}

指针函数和函数指针

指针函数

//
//  main.c
//  指针函数
//
//  Created by admin on 16/3/31.
//  Copyright © 2016年 jin. All rights reserved.
//

#include <stdio.h>
#include <stdlib.h>
/**
 指针函数:返回值为指针的函数
 */
char * test1()
{
    return "Hello world!";
}
char * test2()
{
    /**
    int int1 = 3215156;
    int * int2 = &int1;
    return int2;
     */
//    char *string = "aswdasd";
    char string[] = "aswdasd";
    return string;
}
int main(int argc, const char * argv[]) {
    char *stringA = "sadsdasd";
    char *string = test1();
    printf("%s\n",test1());
    printf("%s\n",stringA);
    char stringB[] = "sadsdasd";
    char *stringC = stringB;
    printf("%s\n",stringC);

    char stringD = 1;
    char *stringE = &stringD;
    printf("%i\n",*stringE);

    printf("%s\n",test2());

    return 0;
}

函数指针

//
//  main.c
//  函数指针
//
//  Created by admin on 16/3/31.
//  Copyright © 2016年 jin. All rights reserved.
//

#include <stdio.h>
void test1()
{
    printf("哈哈哈\n");
}
int test2()
{
    return 888;
}
int test3(int num1,int num2)
{
    return num1 + num2;
}
int main(int argc, const char * argv[]) {
    /**
     函数指针
     */
    void (*test1Pointer)();
    test1Pointer = test1;
    test1Pointer();
    int (*test2Pointer)();
    test2Pointer = test2;
    printf("%i\n",test2Pointer());
    int (*test3Pointer)(int num1,int num2);
    test3Pointer = test3;
    printf("%i\n",test3Pointer(1,2));
    return 0;
}