1. 指针与指针变量的区别:
指针就是地址,地址就是指针
地址就是内存单元的编号
指针变量是存放地址的变量
指针和指针变量是两个不同的概念
注意:通常我们叙述时会把指针变量简称为指针,实际它们的含义并不一样
#include <stdio.h> #include <stdlib.h> int main() { int * p;//p是变量的名字,(int *)表示p变量存放的是int类型变量的地址 //int * p;不表示定义了一个名字叫做*p的变量 // int * p; 应该这样理解:p是变量名,p变量的数据类型是 int *类型 // 所谓int * 类型实际就是存放int变量地址的类型 int i = 3; //p = i; // error,因为类型不一致,p只能存放int类型变量的地址,不能存放int类型的值 //p=55; //error,原因同上 p = &i;/* 1. p保存了i的地址,因此p指向i 2. p是指针变量,不是一个普通变量(只能存放值),可以存放其他变量的地址 3. 指针=地址(指针变量=地址变量)指针变量是存放地址的变量 4. p不是i,i也不是p,跟准确的说:修改p的值不影响i的值,修改i的值不影响p的值 5. 如果一个指针变量指向了某个普通变量,则 *指针变量 就完全等同于 普通变量 例子: 如果p是个指针变量,并且p存放了普通变量i的地址 则p指向了普通变量i *p 就完全等同于 i 或者说: 在所有出现*p的地方都可以替换成i 在所有出现i的地方都可以替换成*p *p 就是以p的内容(即地址)为地址的变量 */ int j = *p; //等价于i=j printf("i = %d, j = %d ",i,j); return 0; }