首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >c语言之指针数组

c语言之指针数组

作者头像
西西嘛呦
发布2020-08-26 21:19:36
8450
发布2020-08-26 21:19:36
举报

什么是指针数组?

一个数组,里面存放的元素均为指针类型数据,被称为指针数组。

其定义形式?

int *name[4];

基本实例一:利用数组初始化指针数组

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

int main() {
    int a[5] = { 1,2,3,4,5 };
    int* name[5] = { &a[0], &a[1], &a[2], &a[3], &a[4] };
    int i;
    for ( i = 0; i < 5; i++)
    {
        printf("%d\n", *name[i]);
    }
    system("pause");
    return 0;
}

基本实例二:将字符串按照从小到大进行排序

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

//将字符串按其首字母进行排序
//传入的是指针数组
void sort(char* str[],int n) {

    char* tmp;
    int i, j, k;
    //从第0个位置开始,到倒数第二个字符串
    for (i = 0; i < n-1; i++)
    {
        //k用于记录当前的字符串小标,

        k = i;
        //遍历第i个之后的字符串,到最后一个为止
        for ( j = i+1; j < n; j++)
        {    //strcmp用于比较字符串str1和str2是否相同。如果相同则返回0;
            //如果不同,在不同的字符处如果str1的字符大于str2的字符,则返回1,否则返回-1
            if(strcmp(str[k],str[j])>0)
            {    //    将较小的赋值给k
                k = j;
            }
            //如果当前最小的位置已经不是i了,就将第i个位置和第k个位置的字符串进行交换
            if (k != i) 
            {
                tmp = str[i];
                str[i] = str[k];
                str[k] = tmp;
            }
        }
    }
}
void print(char* str[], int n) {
    int i;
    for ( i = 0; i < n; i++)
    {
        printf("%s\n", str[i]);
    }
}
int main() {
    //定义一个指针数组,指向的是数组中的每一个字符串
    //注意在visual stdio2019中会报错,解决方法参考https://www.cnblogs.com/xiximayou/p/12121287.html
    //中的第一种方式,一了百了
    char* str[] = { "hello","goodbye","hi","hella" };
    void sort(char* str[], int n);
    void print(char* str[], int n);
    int n = 4;
    sort(str, n);
    print(str, n);
    system("pause");
    return 0;
}

输出:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-12-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档