前言:如未特殊注明,本文所有的图片均来源于 东北林业大学王育英老师
本文仅对2020年春季程序设计课程内容进行总结
指针
值传递
正确:
错误
数组元素的表示
注意:指针变量可以指到数组后的内存单元,但是已无实际意义
数组名作函数参数
传入数组名依旧可以交换
/*
* @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;
}
字符指针变量与字符数组
二维数组和指针
总的来说,上面这张图的意思就是 *(a[i]+j) == *(*(a+i)+j) == a[i][j]
指向一位数组的指针变量
说白了,(*p)[4]就是一个指向二位数组中行指针的指针
函数指针
知道这玩意儿怎么定义,怎么使用的就行了,实际用的少
/*
* @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;
}
指针数组
*p[4] 是一个数组,内含的元素为指针
(*p)[4] 是一个指针
二级指针
总结:
作者:NorthCity1984
出处:https://grimoire.cn/note/spring-programming-course.html
版权:本文《2020年春季程序设计笔记》版权归作者所有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
出处:https://grimoire.cn/note/spring-programming-course.html
版权:本文《2020年春季程序设计笔记》版权归作者所有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任