作者在 2011-09-02 10:50:45 发布以下内容
发现指针太绕人了,老师说要慢慢的学,小心翼翼的学,呵呵,别怕繁琐,还是从最简单的一个程序一个程序来吧
#include<stdio.h>
int main (void)
{
int * p; //p是变量的名字,int * 表示p变量中存放的是 int型变量 的地址
//int* p 不表示定义了一个 叫*p的 int型的 变量
//正确的理解是,p是变量名 p变量的数据类型是int *型。所谓int *型,实际就是存放 int型变量 的地址的类型
int i = 3;
int j;
p = &i; //正确的语法是这样写的,&称作取地址符;
/*
1. p保存了i的地址,因此p指向i。p是指针变量,i是普通变量
2. p不是i,i也不是p,更准确的说,修改p的值不影响i,修改i的值也不影响p
3. 如果一个指针变量指向了某个普通变量,则
*指针变量 就完全等同于 普通变量
例如这里,*p就完全等价于i
在所有出现*p的地方都可以替换成i
在所有出现i的地方也都可以替换成*p
*p 其实就表示 以p的内容 为地址 的变量
*/
//p = i; //p只能存放int变量的地址,不能存放int变量,这里会报错error C2440: '=' : cannot convert from 'int' to 'int *'
//p = 55; //这样写也跟上面一样,也会报错error C2440: '=' : cannot convert from 'int' to 'int *'
j = *p; //等价于 j = i;
printf("i = %d, j = %d\n",i,j); //输出:i = 3, j = 3
return 0;
}
int main (void)
{
int * p; //p是变量的名字,int * 表示p变量中存放的是 int型变量 的地址
//int* p 不表示定义了一个 叫*p的 int型的 变量
//正确的理解是,p是变量名 p变量的数据类型是int *型。所谓int *型,实际就是存放 int型变量 的地址的类型
int i = 3;
int j;
p = &i; //正确的语法是这样写的,&称作取地址符;
/*
1. p保存了i的地址,因此p指向i。p是指针变量,i是普通变量
2. p不是i,i也不是p,更准确的说,修改p的值不影响i,修改i的值也不影响p
3. 如果一个指针变量指向了某个普通变量,则
*指针变量 就完全等同于 普通变量
例如这里,*p就完全等价于i
在所有出现*p的地方都可以替换成i
在所有出现i的地方也都可以替换成*p
*p 其实就表示 以p的内容 为地址 的变量
*/
//p = i; //p只能存放int变量的地址,不能存放int变量,这里会报错error C2440: '=' : cannot convert from 'int' to 'int *'
//p = 55; //这样写也跟上面一样,也会报错error C2440: '=' : cannot convert from 'int' to 'int *'
j = *p; //等价于 j = i;
printf("i = %d, j = %d\n",i,j); //输出:i = 3, j = 3
return 0;
}