第六周作业

这个作业属于那个课程 C语言程序设计
这个作业要求在哪里  
我在这个课程的目标是 了解指针,熟悉指针
这个作业在哪个具体方面帮助我实现目标 熟悉指针的使用
参考文献 B站

一、本周完成的作业:

基础题:
题目1.6-1 求两数平方根之和 (10 分)
函数fun的功能是:求两数平方根之和,作为函数值返回。例如:输入12和20,输出结果是:y = 7.936238。

实验代码

#include<stdio.h> 
#include<math.h>
double fun(double * a,double * b);    
int main()
{
    double a ,b , y;
    scanf("%lf%lf",&a,&b);    
    y=fun(&a,&b);    
    printf("%.2f",y);
    return 0;
 } 
 double fun (double*a,double*b) 
 {
     return sqrt(*a)+sqrt(*b);
 }

设计思路

运行结果截图

题目2.7-1 利用指针返回多个函数值 (30 分)
读入n个整数,调用max_min()函数求这n个数中的最大值和最小值

实验代码

#include<stdio.h>

void max_min(int x, int *a);

void max_min(int x, int *a)
{
    int c;
    for(int i = 0;i < x - 1;i++)
    {
        for(int y = 0;y < x - i - 1;y++)
        {
            if(*(a + y) < *(a + y + 1))
            {
                c = *(a + y + 1);
                *(a + y + 1) = *(a + y);
                *(a + y)= c; 
            }
        }
    }
    printf("max = %d\n", *(a));
    printf("min = %d\n", *(a + x - 1));
    
}
int main()
{
    int x;
    scanf("%d", &x);
    int a[x];
    for(int i = 0;i < x;i++)
    {
        scanf("%d", (a + i));
    } 
    
    max_min(x, a);
    return 0;
}

运行截图

思考题

为什么要使用指针?它有什么用?

1> 可以动态地在堆上分配空间。当你需要1M时,你可以分配1M,需要1K时,可以只分配1K。
2> 可以允许被调用的函数,修改传入的参数。比如,调用 getName(p_buffer);其中,char* p_buffer。这样,可以让getName函数将所得的内容,写入你指定的地方。
3> 可以降低内存复制的代价。比如,struct BigStruct big_struct. 调用dealWithSomething(big_struct)时,将会复制一份,代价太大。但如果使用 dealWithSomething(&big_struct),就只需要复制一个4字节的指针

指针变量在内存中暂用多大的空间?它的大小由什么决定?

1>4或8字节

posted @ 2019-04-05 20:43  秦七不会书画  阅读(113)  评论(0编辑  收藏  举报