MENU

2020年春季程序设计笔记

June 20, 2020 • Read: 190 • 杂谈

前言:如未特殊注明,本文所有的图片均来源于 东北林业大学王育英老师

本文仅对2020年春季程序设计课程内容进行总结

指针

值传递

正确:

image-20200619233317016

错误

image-20200619233350301

数组元素的表示

image-20200619233648488

image-20200619233801423

image-20200619233901916

注意:指针变量可以指到数组后的内存单元,但是已无实际意义

数组名作函数参数

传入数组名依旧可以交换

/*
 * @Author: Mr.Sen
 * @LastEditTime: 2020-06-19 23:45:10
 * @Website: https://grimoire.cn
 * @Mr.Sen All rights reserved
 */ 

#include <stdio.h>

void inv(int  x[], int n)
{   
    int t,i,j,m=(n-1)/2;
    for(i=0;i<=m;i++)
    {   j=n-1-i;
         t=x[i];
         x[i]=x[j];
         x[j]=t;
    }
}

int main()
{   int i,a[10]={3,7,9,11,0,6,7,5,4,2};
     inv(a,10);
    printf("The array has been reverted:\n");
    for(i=0;i<10;i++)
       printf("%d,",a[i]);
    printf("\n");
    return 0;
}

下面是指针版本

/*
 * @Author: Mr.Sen
 * @LastEditTime: 2020-06-19 23:45:10
 * @Website: https://grimoire.cn
 * @Mr.Sen All rights reserved
 */ 
#include <stdio.h>

void inv(int  *x, int n)
{   
    int t,*p,*i,*j,m=(n-1)/2;
    i=x;
    j=x+n-1;
    p=x+m;
    for(;i<=p;i++,j--)
    {
        t=*i;
        *i=*j;
        *j=t;
    }
}
int main()
{  
    int i,a[10]={3,7,9,11,0,6,7,5,4,2};
    inv(a,10);
    printf("The array has been reverted:\n");
    for(i=0;i<10;i++)
       printf("%d,",a[i]);
    printf("\n");
    return 0;
}

字符指针变量与字符数组

image-20200619235053029

二维数组和指针

image-20200619235319869

总的来说,上面这张图的意思就是 *(a[i]+j) == *(*(a+i)+j) == a[i][j]

image-20200620000225504

指向一位数组的指针变量

image-20200620000740498

说白了,(*p)[4]就是一个指向二位数组中行指针的指针

image-20200620001148463

image-20200620002608848

函数指针

image-20200620002944881

知道这玩意儿怎么定义,怎么使用的就行了,实际用的少

/*
 * @Author: Mr.Sen
 * @LastEditTime: 2020-06-20 00:32:26
 * @Website: https://grimoire.cn
 * @Mr.Sen All rights reserved
 */ 
#include <stdio.h>

int Max(int x,int y)
{  int z;
   if(x>y)  z=x;
   else     z=y;
   return(z);
}

int main()
{  int Max(int ,int),  (*p)(int,int);
   int a,b,c;
   p=Max;
   scanf("%d%d",&a,&b);
   c=(*p)(a,b);
   printf("a=%d,b=%d,max=%d\n",a,b,c);
   return 0;
}

image-20200620003305581

指针数组

image-20200620003414914

*p[4] 是一个数组,内含的元素为指针

(*p)[4] 是一个指针

image-20200620003624990

image-20200620003700043

二级指针

image-20200620003819675

总结:

image-20200620003844889

image-20200620003913734

Archives Tip
QR Code for this page
Tipping QR Code