早早地就开始写函数了,但是由于基础语法烂的不行,导致会出现各种错误,于是乎一怒之下就全塞main里面了。但是这肯定不是长久之计。
首先一个(发现fulan人喜欢这么说话/doge)在平时写题的时候很容易写着写着眼睛就晕了,不得不中间敲空行来分块(明明可以写函数但是不写......你这人真是)就粗浅地记录一下学习的过程。
搜索大概是本学期学的最后一个算法了?(前面的都还没学明白) 大概就是这样
#include<stdio.h>
int main()
{
int a;
int *p;//指针变量要加'*';
//值得一提的是,指针变量最好进行初始化赋值
//这个就没写,不太好。应该改成 int *p=0;||int *p=NULL;
//当然,以上两种是在你不知道指向哪里的时候进行的,0是可以直接赋值给指针的唯一整型
scanf("%d",&a);
p=&a;// 对指针变量传值注意'&'取地址符号
printf("%d\n",*p);//输出*p是其数值
//输出p是其指向的地址,也就是输出a的地址;
//在输出的时候加取地址符就输出对应地址,其实很好理解,
//取地址符就是一个运算符嘛....感觉指针好像也不难??不知道为啥之前一直在逃避=.=
return 0;
}
这个大家应该都用过,但是为了让代码更加整洁和美观这样做更好
//举个栗子
#include<stdio.h>
void swap1(int x,int y ){//x,y为形参;
int temp;
temp=x;
x=y;
y=temp;
}
//swap函数没有实现预期功能;
void swap2(int *x,int *y ){
int temp;
temp=*x;
*x=*y;
*y=temp;
}
int main()
{
int a,b;//a,b为实参; //形参实例化之后其实相当于实参的一份临时拷贝,用完后就被销毁;
scanf("%d %d",&a,&b);
// swap1(a,b);
swap2(&a,&b);
printf("A%d B%d\n",a,b);
return 0;
}
课堂笔记:
指针命名
int a;
int *p,*q;//q、p都为指针
int *p,q; //q为int整形
int *p=&a;//这里a和p都是int型才能正常使用;
指针运算
* &
<在指向数组的条件下,且为同类型>
1. 只能进行整数运算;
2. 运算基于指针自身的基类型,与指向的类型无关
3. 注意数组越界问题;
指针与数组:
int sum(int *a,int n)//
{
int s=0;
for(int i=0;i<n;i++) s+=a[i];
return s;
}
int main()
{
int a[5]={1,2,3,4,5};
printf("%d\n",sum(a,5)); //==15
printf("%d\n",sum(a+1,2));//==5
}
指针与二维数组
int main()
{
int (*p)[3]=a; //此处的[3]与二维数组期中的[3]相对应;
int *p[3]; //指针数组
int a[2][3]={1,2,3,4,5,6};
printf("%d\n",p[1][2]);
}
**p 指向指针的指针;
sub -
add -
mul *
div /
int main(2,**p)
命令行单词数
二级指针