先介绍内存的定义,内存就是计算机中的储存空间,空间分为若干份每个单位为字节(BYTE),每部分都有一个地址,就像一本书,所有的内容都有页码,而页码就是指地址,
我们声明一个变量时,int x;//就是 定义一个整型的且大小为四BYTE的空间 来储存x 的值,&X就是指x的地址;
而int *n;//就是指 定义一个指向整型的指针;
在定义 n=&x;//表示n指向x的的指针 ,在接下来的代码中所有x都可以使用*n代替
就是*n=x;
*:使间接寻址或间接引用运算符。
当它作用于指针时,将访问指针所指向的对象。
&:地址运算符,使用函数的地址;
(*,&比算术运算符的优先级要高)
由于指针也是变量,所以在程序中可以直接使用而不必通过间接引用的方式使用。
例如:如果ip是指向整型的指针,那么语句
ip=iq;
就是把iq中的值拷贝到ip 中,这样指针ip的值也指向iq的对象。
#include <stdio.h>
int main()
{
int *x,*a,b=2,*c,d=4;
a=&b;
c=&d;
printf("%d %d\n",*a,*c);
if(*a<*c)
{
x=a;
a=c;//
c=x;
}
printf("%d %d\n",*a,*c);
return 0;
}
指针是个间接调用值,例如
int x=5,*ptr;ptr=&x;printf("%d,%d",x,*ptr);
//指针指向的是x的地址,就是使用地址运算符,间接调用x 的值。
以及字符串的使用,char ptr【36】; scanf(“%s”,ptr);(字符串的首元素,可以表示该数组的地址)