程序中的变量实际是存储空间的别名。,通常以 *+ 变量名的形式组成。
- 变量名: 存储参数的地址。
- * :类似钥匙一样,作为打开存储内存的地址,并取出存储参数的值。
int i = 1; int *p = &i; // p---&i, *p ----1
指针变量虽然是指向变量存储的空间地址,其本质还是变量,所以依然可以对其进行取地址,这就是后面我们所学到的双指针或多层数组。
传值调用和传址调用:
函数的参数也可为指针,如果函数内部需要修改实参,则需要指针的方式将实参以参数地址的方式传入函数。
// 传值调用 int swap(int a, int b){ int c = a; a = b; b = c; } // 上述方式只是简单的将参数值传入到了函数内部,并未修改参数所在地址的参数值,如果函数内部不需要修改实参,而是将其作为运算或逻辑判断的标志,则可用上述方法。 // 传址调用 int swap(int *a, int *b){ int *c = *a; *a = *b; *a = *c; } // 上述的这种方法,是将实参的地址传入到了函数内,这种常用于对实参重新赋值
常量与指针:
前面提到的指针本质还是变量,而只要是变量就可以通过const修饰指针,将其变为常量。