指针(正在施工ing)

早早地就开始写函数了,但是由于基础语法烂的不行,导致会出现各种错误,于是乎一怒之下就全塞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)  
命令行单词数
二级指针 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值