指针:
机器的一个字节可以存放一个char 类型
两个字节存放一个short类型
四个字节可以存放一个long类型
指针只能指向特定类型的对象,就是说每个指针都必须指向某种类型的数据
void类型指针可以指向任何类型的指针
*pi += 1;
等同于++*pi
或
(*pi)++;(注意,这里必须带括号,*和++这样的一元运算符遵循从右到左的顺序结合)
指针与函数参数
c语言是以至传递的方式将参数传递给被调函数,因此被调函数不能直接修改主调函数中的变量值。
下面函数交换两个次序颠倒的数
void swap(int x , int y)
{int temp;
temp = y;
y =x;
x = temp;
}
则swap(a,b)无法达到目的,它交换的只是副本,而实际内存中的值并没有改变
这时可以用指针的形式了
void swap(int *px, int *py)
{int temp;
temp = *px;
*px = * py;
*py = temp;
}
指针和数组
int a[10];
int *p = a;
数组名和指针的区别:
指针是一个变量,而数组名不是
p = a;
p++;适合法的
但是
a = p;
a++;
是不合法的