//
// 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 = #
int *p = #
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 = #
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;
}