首页 > 编程语言 >2023-2024-1 20231301 《计算机基础与程序设计》第十二周学习总结

2023-2024-1 20231301 《计算机基础与程序设计》第十二周学习总结

时间:2023-12-17 20:14:31浏览次数:43  
标签:pi 指向 int 20231301 2024 2023 include void 指针

2023-2024-1 20231301 《计算机基础与程序设计》第十二周学习总结

作业信息

作业 链接
作业课程 <班级>(2023-2024-1-计算机基础与程序设计
作业要求 <作业>(2023-2024-1计算机基础与程序设计第十二周学习总结)
作业目标 <《C语言程序设计》预习第十一章> 《C语言程序设计》
作业正文 <博客>(第十二周学习总结

目录

学习内容总结

《C语言程序设计》第十一章

数组名的意义以及在访问数组元素中的作用。

点击查看代码
#include<stdio.h>
int main()
{
    int a[5],i;
    for(i=0;i<5;i++)
    {
        scanf("%d",a+i);//a+i等于&a[i]
    }
    for(i=0;i<5;i++)
    {
        printf("%d ",*(a+i));//*(a+i)等于a[i]
    }
    return 0;
}
指针运算的特殊性以及在访问数组元素中的作用。

p+1不改变当前指针的指向,p仍然指向原来指向的元素;p++中p指向下一个元素,但是二者都表示指向下一个元素。

点击查看代码
#include<stdio.h>
int main()
{
    int a[5],*p;
    for(p=a;p<a+5;p++)
    {
        scanf("%d",p);//指针法引用数组元素
    }
    for(p=a;p<a+5;p++)
    {
        printf("%d ",*p);
    }
    return 0;
}
#include<stdio.h>
int main()
{
    int a[5],i,*p=NULL;
    p=a;
    for(i=0;i<5;i++)
    {
        scanf("%d",&p[i]);//相当于p+i、a+i、&a[i]
    }
    for(i=0;i<5;i++)
    {
        printf("%d ",p[i]);//相当于*(p+i)、*(a+i)、a[i]
    }
    return 0;
}
int a[3][4]; a+i->&a[i] 代表行地址 a[i]+j 代表&a[i][j] (a[i]+j) 代表a[i][j] a[i][j]<->(a[i]+j)<->((a+i)+j)<->(*(a+i))[j]

通过二维数组的行指针和列指针来引用二维数组元素。

定义一个二维数组的行指针:
int (*p)[4];
定义了指向含有4个元素的一维整型数组的指针变量
p++指向下一行元素
int *p;
p=&a[0][0]; //定义了一个列指针并初始化
p++指向下一个元素的地址

点击查看代码
#include<stdio.h>
#define N 4
void InputArray(int *p,int n,int m)
//void InputArray(int (*p)[N],int n,int m)
{
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            scanf("%d",&p[i*m+j]);
        }
    }
}
void OutputArray(int *p,int n,int m)
//void OutputArray(int (*p)[N],int n,int m)
{
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            printf("%d ",p[i*m+j]);
        }
    }
}
int main()
{
    int a[3][4];
    //InputArray(a,3,4);
    //OutputArray(a,3,4);
    InputArray(*a,3,4);
    OutputArray(*a,3,4);//向二维数组传递0行0列的地址
    return 0;
}
指针数组用于表示多个字符串。
点击查看代码
//指针数组用于表示多个字符串
#include<stdio.h>
#include<string.h>
#define MAX_LEN 10;
#define N 150
void SortString(char *pStr[],int n)
{
    int i,j;
    char *temp=NULL;
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n;j++)
        {
            if(strcmp(ptr[j],ptr[i])<0)
            {
                temp=pStr[j];//交换字符串的指针
                pStr[j]=pStr[i];
                pStr[i]=temp;
            }
        }
    }
}
int main()
{
    int i,n;
    char name[N][MAXLEN];
    char *pStr[N];
    scanf("%d",&n);
    getchar();
    for(i=0;i<n;i++)
    {
        pStr[i]=name[i];//将第i行地址赋给数组
        gets(pStr[i]);
    }
    //char *pStr[N]={"America","England","Australia","Sweden","Finland"};
    SortString(pStr,n);
    for(i=0;i<n;i++)
    {
        puts(pStr[i]);
    }
    return 0;
}

动态内存分配是在堆上进行,需要用户手动分配和销毁。
动态内存分配函数需要加上头文件:#include<stdlib.h>
malloc:
原型:void *malloc(unsigned int size)
返回一个通用指针,可以用强制转换的方法将返回的指针值转换为所需的类型
int *pi=NULL;
pi=(int *)malloc(2);
申请2个字节的内存,pi指针变量指向这段存储空间的首地址
pi=(int *)malloc(sizeof(int));用于不能确定某种类型所占内存的字节数

calloc:
原型:void *calloc(unsigned int num,unsigned int size);
第一个参数表示申请空间的数量,第二个参数表示每个空间的字节数
pi=(int )calloc(10,sizeof(int));
pi=(int )malloc(10
sizeof(int));
从安全考虑,前者更好。因为calloc能将分配的内存初始化为0。

free:
原型:void free(void *pi);
形参指向分配的内存地址,释放该指针指向的内存空间。

realloc:
原型:void *realloc(void *p,unsigned int size)
将p所指向的存储空间的大小改为size个字节

点击查看代码
#include<stdio.h>
#include<stdlib.h>
void InputArray(int *p,int m,int n)
{
    int i,j;
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            scanf("%d",&p[i*n+j]);
        }
    }
}
double OutputArray(int *p,int m,int n)
{
    int i,j,sum=0;
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            sum+=p[i*n+j];
        }
    }
    return (double)sum/(m*n);
}
int main()
{
    int *p=NULL,m,n;
    double aver;
    scanf("%d",&m);//m个班级
    scanf("%d",&n);//一个班级n个学生
    p=(int *)calloc(m*n,sizeof(int));
    if(p==NULL)
    {
        exit(0);
    }
    InputArray(p,m,n);
    aver=Average(p,m,n);
    printf("%lf\n",aver);
    free(p);//释放动态分配的内存空间
    return 0;
}

学习中的问题

  1. Wireshark
    Wireshark实践
  2. 网站设计
    网站设计

标签:pi,指向,int,20231301,2024,2023,include,void,指针
From: https://www.cnblogs.com/twilight0966/p/17896561.html

相关文章

  • 2023-2024-1 20231319 《计算机基础与程序设计》第十二周学习总结
    2023-2024-120231300《计算机基础与程序设计》第X周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第十二周作业这个作业的目标自学教材《C语言程序设计》第11章教材学习内容总结......
  • 2023-2024-1 20232422《网络》第6周学习总结
    教材内容梳理如下教材学习中的问题和解决过程问题1:区块链的数据结构为什么具有不可篡改的特性?解答:研读教材可知。区块链的数据结构:比特币网络中,数据以文件的形式被永久记录,称这些记录为区块。新区块一旦被记录在区块链上,就不能被改变或者删除。时间戳记录特定的数据生......
  • 2023-2024-1 20231325 《计算机基础与程序设计》第12周学习总结
    ###目录*作业信息*教材学习内容总结1.《c语言程序设计》第11章*基于AI的学习*上周错题*学习进度条作业信息这个作业属于哪个课程2023-2024-1《计算机基础与程序设计》这个作业的要求在哪里1.学习《C语言程序设计》第11章并完成云班课测试。作业正文......
  • 2023/12/17
    ​EnglishLuli​2023/12/17 单词phenomenon(现象):指一种普遍出现或引起注意的事物或事件。hypothesis(假设):指对某事物或现象的推测性解释,需要进一步验证。facilitate(促进):指使事情更加容易或顺利进行。coherent(连贯的):指事物或想法逻辑清晰,相互关联,构成一个整体。......
  • 学年(2023-2024-1)学号(20231311)《计算机基础与程序设计》第12周学习总结
    2023-2024-120231311《计算机基础与程序设计》第12周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第十二周作业这个作业的目标学习《C语言程序设计》第11章并完成云班课测试作业......
  • 2023-2024-1 20231427 《计算机基础与程序设计》第十二周学习总结
    作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK12这个作业的目标<加入云班课,参考本周学习资源自学教材《C语言程序设计》第11章并完成云班课测......
  • 2023--2024-1 20231407陈原计算机科学概论与C语言程序设计第十二周学习总结
    这个课程属于哪里计算机基础与程序设计作业要求https://www.cnblogs.com/rocedu/p/9577842.html#WEEK12 作业目的自学教材作业正文https://www.cnblogs.com/CCCY12345/p/17909622.html结构体:一种构造类型。内部成员由一种或多种基本类型或构造类型构......
  • 2023-2024-1 20231415 <计算机基础与程序设计》第十二周学习总结
     这个作业属于哪个班级https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK12作业目标《C语言程序设计》第11章并完成云班课测试作业正文https://i.cnblogs.com/posts/edit教材......
  • C#有望成为2023年的编程语言之王
    前言TIOBE2023年12月编程语言指数头条新闻:C#有望成为2023年的编程语言之王。TIOBE是什么?访问地址:https://www.tiobe.com/tiobe-index/TIOBE是一个编程社区指数,用于衡量不同编程语言的受欢迎程度。TIOBE指数基于全球范围内熟练工程师数量、课程和第三方供应商等多个因素进行......
  • THUPC 2024 游记
    2023.12.11今天报名了\(\text{THUPC}\),想玩一下,也没想打出什么结果。和同学组了个队。2023.12.17\(11\)点到学校机房。我过\(M\)。lzy到机房了。我过\(C\)。zwz会\(E\),zwz写\(E\),挂挂挂,调调调。lzy和我想\(K\),会\(K\),一波特判,挂挂挂,不知道哪里错了。zwz重......