首页 > 其他分享 >指针运用!!!(要多回顾)

指针运用!!!(要多回顾)

时间:2024-12-15 15:32:10浏览次数:9  
标签:arr 回顾 int char printf 字符串 运用 include 指针

1.指针和字符串

知识点1——冒泡排序

基本格式

for(i=0;i<5-1;i++)
    {
        for(j=0;j<5-1-i;j++)
        {比较大小,

        交换顺序

        }

}

知识点2:strcmp函数———用于比较字符串的ASCII大小

知识点3:指针字符串数组的初始化

malloc函数——用于动态分配内存

格式——arr[i]=*char)malloc(len*sizeof(char));

#include<stdio.h>
#include<stdlib.h>
#include<string.h> 
int main()
{
    int i=0;
    int j=0;
    char* arr[5];//字符串的数量
    //每个字符串的长度
     
    for(i=0;i<5;i++)
    {//字符串数组——可以用数组的方式输入 
        //分配内存,假设最多100个字符 
        arr[i]=(char*)malloc(101*sizeof(char));
         
        scanf("%s",arr[i]);//不需要取地址符 
    }
//字符串的输入 
//    char a[200]; 
//    int i=0;
//    while((a[i]=getchar())!=' ')
//    {
//        i++;
//    }
//    a[i]='\0';
    


    //冒泡排序部分
    for(i=0;i<5-1;i++)
    {
        for(j=0;j<5-1-i;j++)
        {
            if(strcmp(arr[j],arr[j+1])>0)
            //if(arr[j][0]>arr[j+1][0])
            {//地址是可以交换的 
                char* temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp; 
            }
        }
    }
    
    //输出
    printf("After sorted:\n");
    for(i=0;i<5;i++)
    {
        printf("%s\n",arr[i]);
    }
    
    return 0;    
}

2.尾接字符串

#include<stdio.h>
#define MAX 20
//函数
char func(char* s,char* b)
{
    char* p=s;//防止之后操作值的不定性
    int i=0;
    while(* p!='\0')
    {
        p++;//找到p的最后地址
    }

    while(*b!='\0')
    {
        *p=*s;
        p++;
        s++;
    }
*p='\0';
return s;
}
int main()
{
    char* p;///函数返回值的地址
    char str1[MAX+MAX]={'\0'};//第一个字符串
    char str2[MAX]={'\0'};//第二个字符串
    scanf("%s%s",str1,str2);
    
    p = str_cat(str1, str2);//函数调用

       printf("%s\n%s\n", p, str1);
        return 0;        
}

为什么要单独* p=s;——字符串指针常见操作

3.输出最长字符串

#include<stdio.h>
#include<string.h>
#define MAX 200
int main()
{
    int n;
    scanf("%d",&n);
    
    char arr[MAX][MAX]={{0}};
    int i=0;
    for(i=0;i<n;i++)
    {
        scanf("%s",arr[i]);
    }
    
    
    char* max=arr[0];//将最大值设置为第一个字符串 
    for(i=0;i<n;i++)
    {
    
        if(strlen(max)<strlen(arr[i]))
        {
            max=arr[i];//更新最大值 
        }
    }
    
    printf("The longest is: %s",max);
    
     
    return 0;
}

4.求两个集合的交集

疑问解释:

#include<stdio.h>
#include<string.h>
int main()
{
    //定义两个数组
    int a[10]={0};
    int b[10]={0};
    int i=0;
    for(i=0;i<10;i++)
    {
        printf("%d",a[i]);//输入数组1 
    }
    
    for(i=0;i<10;i++)
    {
        printf("%d",b[i]);//输入数组2 
    }
    
    printf("这两个集合的交集有:");
    //!!!重头戏
    //for(int* pa=a;pa<sizeof(a)/sizeof(a[0]);pa++)数组的个数
    for(int* pa=a;pa<a+sizeof(a)/sizeof(int);pa++)//指针的结束地址
    {
        //for(int* pb=b;pb<sizeof(b))/sizeof(b[0]);pb++)
        for(int* pb=b;pb<b+sizeof(b))/sizeof(int);pb++)
        {
            if(*pa==*pb)
            {
                printf("%d",*pb);
            }
        }
     } 
     
    return 0;
    
}

标签:arr,回顾,int,char,printf,字符串,运用,include,指针
From: https://blog.csdn.net/2402_88598958/article/details/144465795

相关文章

  • GameMaker Studio开发:高级动作系统_GML脚本语言的高级运用
    GML脚本语言的高级运用在上一节中,我们介绍了基本的GML脚本语言及其在GameMakerStudio中的应用。本节将深入探讨GML脚本语言的高级运用,包括函数、变量、控制结构、面向对象编程和性能优化等方面。这些内容将帮助你更好地利用GML编写复杂且高效的代码,从而提升你的游戏开发能......
  • 指针详解----中
    文章目录系列文章目录前言1、使⽤指针访问数组2、⼀维数组传参的本质3、⼆级指针4、指针数组5、数组指针变量6、函数指针变量7、函数指针数组总结前言继上一篇博客我们了解了关于指针的基础知识,下面我们来接着来学习关于指针方面更为深入的一些问题吧,一......
  • 十八、初识指针(1)
    指针(变量)就是用来存放地址的(变量)存放在指针中的值都被当作地址处理一、指针和指针类型指针类型决定了指针进行解引用时,能够访问空间的大小。例:int*p    //*p访问4个bytechar*p    //*p访问1个bytedouble*p    //*p访问8个byte二、指针......
  • 五、类、结构体、指针、引用
    类可以将变量、数组和函数完美的打包在一起。1.类与结构体类的定义:#include<iostream>usingnamespacestd;classPerson{ private: doublescore; public: stringname; intage; voidsay() { cout<<"人会说话"; } voidset_score(doublecj)......
  • C语言(野指针及内存操作)
    野指针、空指针、空悬指针野指针定义:指向一块未知区域(已经销毁或者访问受限的内存区域外的已存在或不存在的内存区域)的指针,被称作野指针。野指针是危险的。危害:①引用野指针,相当于访问了非法的内存,常常会导致段错误(segmentationfault),也有可能编译运行不报错。②引......
  • golang: 指针和地址
    一,指针和地址的操作1,代码:要掌握以下三个用法:  *指针变量名 得到指针所指向的变量  *类型   表示这是一个此类型的指针  &变量   返回一个存放变量地址的指针packagemainimport("fmt""reflect")funcisPointer(vinterface{})......
  • golang: struct与指针
    一,可以通过指针访问struct的变量1,代码:packagemainimport("fmt""reflect")//判断是否指针funcisPointer(vinterface{})bool{returnreflect.ValueOf(v).Kind()==reflect.Ptr}//定义一个结构体typePersonstruct{NamestringAge......
  • C++_快慢指针在业务开发中的应用-数据结构与算法
    报错的解决vector不是模板问题,第一是由于没有添加#include<vector>。第二是需要添加命名空间。命名空间添加有两种,第一是直接在vector前面加上std::,第二是开头加入usingnamespacestd;加入vector后,std命名空间没有vector的问题--C++版本问题其他快慢下标......
  • 我爱学算法之—— 感受双指针带来的快感(下)
    前言本篇文章继续来学习双指针算法;继续加油!!!一、三数之和15.三数之和-力扣(LeetCode)题目解析题目要求我们在一个给定的数组中,找到和等于0的三元组;但是呢有一些要求首先,这三元组中的元素是给定数组中的不同元素其次,找到的三元组不能够重复算法分析暴力枚举+set......
  • 江科大STM32学习:01 C语言(2)指针
    1.指针简介指针Pointer是C语言的一个重要知识点,使用灵活,功能强大指针和底层硬件联系紧密(寄存器),使用指针可操作数据的地址,实现数据的间接访问2.计算机存储机制每个区域都是一个字节,线性分配下去,每个字节对应一个地址。注:一个字节是8bitinta=0x12345678;//十六进制,八......