最近开始学习指针,以前我们学过一些排序(冒泡、选择等等),这次给大家带来指针的一些用法!
1、将数组a[10] = {1,2,3,4,5,6,7,8,9,10}逆序输出
#include <stdio.h>
//利用指针将数组逆序
int main1()
{
int a[10] = {1,2,3,4,5,6,7,8,9,10};
int *p1 = a;
int *p2 = a + sizeof(a)/sizeof(int)-1;
int tmp ;
while (p1 < p2)
{
tmp = *p1;
*(p1++) = *p2;
*(p2--) = tmp;
}
int i;
for(i = 0; i < 10; i++)
{
printf ("%d\n", a[i]);
}
return 0;
}
2、数组的逆序比较简单,我们看看英语句子的逆序
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "you are from shanghai";
// 将整个字符串逆序
char *p1 = str;
char *p2 = str + strlen(str) - 1;
char *p3 = NULL;
char tmp;
while (p1 < p2)
{
tmp = *p1;
*(p1++) = *p2;
*(p2--) = tmp;
}
puts(str);
// 再将每一个单词进行逆序,单词通过空格去找
p1 = str;
p2 = str;
while(*p2) // p2找到字符串结束为止
{
if (*p2 == ' ') // 找到一个单词,要将前面的单词进行逆序
{
p3 = p2 - 1;
while (p1 < p3)
{
tmp = *p1;
*(p1++) = *p3;
*(p3--) = tmp;
}
p1 = p2 + 1;
}
p2++;
}
p3 = p2 - 1;
while (p1 < p3)
{
tmp = *p1;
*(p1++) = *p3;
*(p3--) = tmp;
}
puts(str);
return 0;
}