指针和字串的基本使用

//
//  main.c
//  指针的基本使用
//
//  Created by admin on 16/3/30.
//  Copyright © 2016年 jin. All rights reserved.
//

#include <stdio.h>
void test1()
{
    int num = 1;
    // 初始化指针变量,注意,指针变量 有类型的
//    int *p;
//    p = &num;
    int *p = &num;
    printf("%p\n",p);
}
// 交换两个变量的值,函数的参数是指针的时候,要注意操作变量的时候也要以指针的方式去操作,不要和变量搞混了
void test2(char *a,char *b)
{
    *a = *a ^ *b;
    *b = *a ^ *b;
    *a = *a ^ *b;
}
// 按字节打印
void test3(int num)
{
    char * temp = &num;
    int length = sizeof(num);
    for (int i = 0; i < length; i++) {
        printf("%i\n",*temp++);
    }
}
// 数组翻转
void test4(int *arr,int length)
{

    for (int i = 0; i < length; i++) {
        if ((length - i - 1) > i) {
            arr[i] = arr[i] ^ arr[length - i - 1];
            arr[length - i - 1] = arr[i] ^ arr[length - i - 1];
            arr[i] = arr[i] ^ arr[length - i - 1];
        }
        else
        {
            break;
        }
    }
}
// 计算字符串长度
int test5(char *string)
{
    char * strTemp = string;
    int length = 0;
    while (1) {
        if (*strTemp == '\0') {
            break;
        }
        else
        {
            length++;
            strTemp++;
        }
    }
    return length;
}
// 翻转字符串
void test6(char *string)
{
    int length = test5(string);
//    char * tempPointer = string;
    for (int i = 0; i < length; i++) {
        if ((length - 1 - i) > i) {
            string[i] = string[i] ^ string[length - 1 - i];
            string[length - 1 - i] = string[i] ^ string[length - 1 - i];
            string[i] = string[i] ^ string[length - 1 - i];
        }
    }
}
// 按照二维字符串数组排序
#include <string.h>
void test7(char (*string)[10],int length)
{
//    printf("%i",string[0]);
    int tempStringLenght = sizeof(string[0]) / sizeof(char);
    for (int i = 0; i < length - 1; i++) {
        for (int j = i + 1; j < length; j++) {
            if(strcmp(string[i], string[j]) > 0)
            {
                char tempString[tempStringLenght];
                strcpy(tempString, string[i]);
                strcpy(string[i], string[j]);
                strcpy(string[j], tempString);
            }
        }
    }
}
// 对字符串类型的指针数组排序
void test8(char *string[],int length)
{
    for (int i = 0; i < length - 1; i++) {
        for (int j = i + 1; j < length; j++) {
            if(strcmp(string[i], string[j]) > 0)
            {
                char *tempString = string[i];
                string[i] = string[j];
                string[j] = tempString;
//                char tempString[tempStringLenght];
//                strcpy(tempString, string[i]);
//                strcpy(string[i], string[j]);
//                strcpy(string[j], tempString);
            }
        }
    }
}
int main(int argc, const char * argv[]) {
    /**
    char a = 'a';
    char b = 'b';
    printf("交换前:a = %c,b = %c\n",a,b);
    test2(&a,&b);
    printf("交换后:a = %c,b = %c\n",a,b);
     */
//    test3(10000);
    /**
    int arr[] = {1,85,2,3,8,56,52,13,88,123,4,6,65};
    for (int i = 0; i < sizeof(arr) / sizeof(int); i++) {
        printf("%i ",arr[i]);
    }
    test4(arr,sizeof(arr) / sizeof(int));
    printf("\n");
    for (int i = 0; i < sizeof(arr) / sizeof(int); i++) {
        printf("%i ",arr[i]);
    }
    printf("\n");
     */
    /**
    char string[] = "asdasfaaa张";
    printf("%s\n",string);
    test6(string);
    printf("%s\n",string);
     */
    /**
    char string[][10] =
    {
        "atd",
        "asd",
        "sdf",
        "we",
        "sdvv",
        "gh",
        "qwe"
    };
    test7(string,sizeof(string) / sizeof(string[0]));
    for (int i = 0; i < sizeof(string) / sizeof(string[0]); i++) {
        printf("%s\n",string[i]);
    }
    printf("\n");
     */
    char *string[] =
    {
        "atd",
        "asd",
        "sdf",
        "we",
        "sdvv",
        "gh",
        "qwe"
    };
    test8(string,sizeof(string) / sizeof(char *));
    for (int i = 0; i < sizeof(string) / sizeof(char *); i++) {
        printf("%s\n",string[i]);
    }
    return 0;
}

标签: c

添加新评论