指针和数组(上)
1)指针基础:
既然程序中的变量只是一段存储空间的别名,那么是不是必须通过这个别名才能使用这段存储空间,
int main()
{
int i=5;
int *p=&i;
printf("%d,%08x\n",i,p);
*p=10;
printf("%d,%08x\n",i,p);
return 0;
}
指针本质:
指针在本质上也是一变量,
指针需要要占用一定的内存空间,
指针用于保存内存地址的值,
*号的意义:
在指针声明时,*号表示所声明的变量为指针,
在指针使用,*号表示取指针所指向的内存空间中的值,
//指针声明:
int i=0;
int j=0;
int *p=&i; *号类似一把钥匙,通过这把钥匙可以打开内存,读取内存中的值。
//取值:
j=*p;
指针占用的内存空间,
指针的地址,
通过*号写内存,
传值调用与传址调用:
指针是变量,因此可以声明指针参数,
当一个函数体内都需要改变实数参的值,则需要使用参数,
函数调用时实参值复制到形参,
指针适用于复杂数据类型作为参数的函数中,
利用指针实现变量交换函数,
const int* p; //p可变,p指向的内容不可变,
int const *p;//p 可变,p指向的内容不可变,
int *const p;//p 不可变,p指向的内容可变,
const int* const p; //p和p指向的内容都不可变,
当const 出现在*号左边时指针的数据为常量,
当const 出现在*后右边时指针本身为常量,
指针小结:
指针是c语言中一种特别的变量,
指针所保存的值是内存的地址,
可以通过指针修改内存中的任意地址内容,
大悲无泪--大悟无言--大笑无声