字符串指针本质上还是属于还前面学习的数组指针类似,只不过其中元素类型变成了字符型罢了,今天进行了练习巩固前面学习的指针操作的同时还学习了字符型指针以及指针函数。
#include<stdio.h>
//利用指针进行选择排序
void choiceSort(int *begin, int *end)
{
int *p;
for(;begin < end;++begin)
{
for(p = begin + 1;p <= end;++p)
{
if(*begin > *p)
{
swap(begin, p);
}
}
}
}
#include<stdio.h>
//冒泡排序
void bubbleSort(int *begin,int *end)
{
int *q;
for(q = end;q > begin;--q)
{
int *p;
for(p = begin;p < q;++p)
{
if(*p > *(p+1))
{
swap(p,p+1);
}
}
}
}
今天还学习了快速排序其利用了指针可以定位到具体的地方采用递归调用实现快速排序其复杂度较低。
#include<stdio.h>
//快速排序
void swap(int *a, int *b)
{
int t;
t = *a;
*a = *b;
*b = t;
}
void qSort(int *begin, int *end)
{
if(begin > end)
{
return;
}
int t;
t = *begin;
int *p = begin;
int *q = end;
while(p < q)
{
while(q > t)
{
--qq;
}
while(p < t)
{
++p;
}
swap(p,q);
}
swap(begin, p);
qSort(begin, p - 1);
qSort(p + 1, end);
}
void Strcpy(char *dest, const char *src)
{
while(*src)
{
*dest++ = *src++;
}
*dest = 0;
}
void Memcpy(void *dest, const void *src, int n)
{
char *p = (char *)dest;
char *q = (char *)src;
while(n)
{
*p++ = *q++;
--n;
}
}
void Strcat(char *dest, const char *src)
{
while(*dest)
{
++dest;
}
while(*src)
{
*dest++ = *src++;
}
*dest = 0;
}
这几个练习是对字符串类型的数据进行操作的
在此之外学习了malloc函数其作用是给目标申请堆区空间进行存放的。
int n = 10;
int *q = malloc(n * sizeof(int));
if(q)
{
int i;
for(i=0;i < 10;++i)
{
q[i] = fib(i+1);
}
for(i = 0;i<n;++i)
{
printf("%d\n",q[i]);
}
}
puts("\b ");
free(q);
q = NULL;
这一道题就是申请在堆空间申请一个长度为10的一维整型数组,并在其中填入斐波拉契数列的前10项。