今天篮球场地板没干,体育课没上,开心。
8:00~9:40 :数学课;
10:00~12:00:学习指针;
14:30~17:00:上课;
17:30~18:30:刷网课,学习指针;
刷题数:1;
指针归纳总结1:c语言引用变量值便是通过变量类型和变量地址,地址形象化地称为“指针”。
假如有以下定义:
int i=4;
int *i_point=&i;
printf("%d",i);//直接引用
printf("%d",*i_point);//间接引用
系统分配地址:2000~2003的4个字节给i;
存储单元地址:2000~2004;
存储单元内容:4;
指针是一个地址,而指针变量是存放地址的变量;
int是为指针变量i_point指定的“基类型“;基类型指定指针变量可指向的变量类型。因为系统调用变量是先取变量地址,之后按照基类型的存储方式和大小使用变量;
如i_point可以指向int型变量,但不能指向浮点型变量,也不能指向long long int型。因为存储方式和大小结果会有很大偏差;
*为指针运算符;作用与&相反,如第四行的*i_point便相当与i;
"*i_point"等价"i"即*i_point=5";与"i=5;"等价;
int *i_point=&i;相当于int *i_point; i_point=&i;
int a,b;
int *pointer_1=&a,*pointer_2=&b;
pointer_1=&a;//合法
*pointer_1=&a;//不合法
float *pointer_3;
pointer_3=2000;//不合法
指针作为函数参数:因为指针变量拥有变量地址,因此我们可以利用这一点就可以通过其他函数改变原变量。只需要将变量地址传过去。下面这个表格便是变量与指针作为函数参数是的区别。
实参 | 变量 | 指针 |
形参 | 变量 | 指针 |
传递的信息 | 变量的值 | 变量的地址 |
能否改变实参 | 不能 | 能 |
例如:
#include <stdio.h>
int main()
{void swap(int *p1,int *p2);
int a,b; int*pointer_1,*pointer_2;
printf("please enter a and b:");
scanf("%d,%d",&a,&b);
pointer_1=&a;
pointer_2=&b;
if (a<b) swap(pointer_1,pointer_2);
printf("max=%d,min=%d\n",a,b);
return 0;
}
void swap(int *p1,int *p2)
{ int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
注意:函数的调用可以(而且只可以)得到一个返回值(即函数值),而使用指针变量作参数,可以得到多个变化了的值。如果不用指针变量是难以做到这一点的。