指针也就是内存地址,指针变量是用来存放内存地址的变量,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。本文主要介绍指针应用的相关编程实例练习题,以及相关的示例代码。

1、使用指针判断回文数

一个正数如果顺着和反过来都是一样的(比如12321,反过来也是12321),那么就称为回文数。回文数不能以0开头,回文数从1开始。使用指针实现回文数判断,代码如下,

#include <stdio.h>
#include <string.h>
void func(int len,char *p)
{
    int i,j;
    for(i = 0,j = len - 1;i <= len;i++,j--)
    {
        if(*(p+i) != *(p+j))
        {
            printf("不是回文数");
            break;
        }
    }
    if(i >= j)
    {
        printf("是回文数");
    }
}
int main()
{
    char a[20];
    gets(a);
    char *p;
    p = &a;
    int length;
    length = strlen(a);
    func(length,a);
    return 0;
}

2、找出字符串中的数字

输出一段包含数字的字符串,通过使用指针来找出字符串的中数字,代码如下,

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define MAX_LEN 80

void extractNum(char *str);

int main()
{
    char str[MAX_LEN];
    fgets(str,80,stdin);
    extractNum(str);
    puts(str);
    return 0;
}

void extractNum(char *str)
{
    int j=0;
    char a[80];
    for(int i=0;i<80;i++){
        if( *(str+i)>='0' && *(str+i)<='9' ){
            if(*(str+i-1)=='-'){
            a[j]='-';
            j++;
            }
            break;    
        }
    
    }
    for(int i=0;i<80;i++){
        if(  *(str+i)>='0' && *(str+i)<='9'  ){
            a[j]=*(str+i);
            j++;
        
        }
    }
    for(int i=0;i<j;i++){
        *(str+i)=a[i];
    }
        *(str+j)='\0';

}

3、指针实现字符串数组排序

有一个字符串数组,通过使用指针来实现对字符串数组进行排序,代码如下,

#include<stdio.h>
#include<string.h>

void change(int n, char* strings[]) {
    char* temp;
    int i, j;
    for (i = 0; i < n; i++) {
        for (j = i + 1; j < n; j++) {
            if (strcmp(strings[i], strings[j])>0) {
                temp = strings[i];
                strings[i] = strings[j];
                strings[j] = temp;
            }
        }
    }
}

int main() {
    int n;
    int i;
    char** p;
    char* strings[] = { "C", "C++", "JAVA", "C#", "Python" };
    n = sizeof(strings) / sizeof(strings[0]);
    printf("排序前的数组为:");
    for (i = 0; i < n; i++) {
        printf("%s ", strings[i]);
    }
    printf("\n");
    change(n, strings);
    printf("排序后的数组为:");
    for (i = 0; i < n; i++) {
        printf("%s ", strings[i]);
    }
    printf("\n");
    return 0;
}

推荐文档