C语言学习六指针

初识指针,简单示例程序:

/*
	指针就是地址,地址就是指针
	地址就是内存单元的编号
	指针变量是存放地址的变量
	指针和指针变量是两个不同的概念
	但是要注意: 通常我们叙述时会把指针变量简称为指针,实际它们含义并不一样
*/
# include <stdio.h>

int main(void)
{
	int * p;	// p是变量的名字, int * 是连在一起的,他表示 p 变量存放的是int类型变量的地址
				//int * p 不表示定义了一个名字叫*p的变量
				// int * p 应该这样理解:p是变量名, p变量的类型是int *类型
				//		所谓 int * 类型, 实际就是存放int变量地址的类型
	int i = 3;
	int j;

	p = &i;	
	
	/*
		1.  p 保存了i的地址,因为p指向i
		2.  p 不是 i, i也不是p, 更准确的说修改p的值不影响i的值,修改i的值也不会影响p的值
		3.  如果一个指针变量指向了某个普通变量,则
			* 指针变量 就完全等同于,普通变量
		
			例子:
				如果p是个指针变量,并且p存放了普通变量i的地址
				则p指向了普通变量i
				*p 就完全等同于 i
				或者说: 在所有出现 *p 的地方都可以替换成i
						 在所有出现 i 的地方都可以替换成*p

				*p 就是以p的内容为地址的变量

	*/

	j = *p;	//等价于 j = i
	printf("i = %d, j = %d\n", i, j);

        附注:
                * 的含义
                    1.乘法
                    2.定义指针变量
                      int * p;
                      //定义一个名字叫 p 的变量, int * 表示p只能存放int变量的地址
                    3.指针运算符
                         该运算符放在已经定义好的指针变量的前面
                         如果 p 是一个已经定义好的指针变量
                         则 *p 表示  以p的内容为地址的变量
	return 0;
}

 

你可能感兴趣的:(c)