c语言中指针的使用【一】

来源:互联网 发布:穿校服的意义知乎 编辑:程序博客网 时间:2024/04/29 10:52

指针是c语言中的重要概念,也是c语言的重要特色。使用指针,可以使程序更加简洁。

1.数据在内存中的存储方式:按数据类型给在内存为其分配一定数量的存储单元(字节)。

2.内存单元的地址:内存单元的编号,与变量名对应。

3.内存单元的内容:值

4.变量的直接访问方式:按变量的地址(即变量名)存取变量值的方式。

5.变量的间接访问方式:将变量的地址放在另一个内存单元中,先到另一个内存单元中取得变量的地址,再由变量的地址找到变量并进行数据存取。

  变量pointer为指针变量,存放的是变量i的内存地址,我们说pointer指向i的地址。

6.指针的概念:一个变量的地址称为该变量的指针。

7.指针变量:专用用于存储其他变量地址的变量。

指针与指针变量的区别,也就是值与变量的区别。

指针变量的定义:

1.定义方式: 类型标识符        *指针变量名;

2.指针变量的三要素:

指针变量的类型:和其所指变量的类型一致

指针变量的值:另一个变量在内存的地址

指针的名字:起发同普通变量

3.说明

标识符前面的*,表示该变量是指针变量,但是*后才是指针变量的名字。


指针变量赋值:1.指针变量名=某一地址;(&取某一地址符)

2.指针变量名= 另一个已赋值的指针变量

例如:int  i,*p,*q;

p=&i;//方式一

q = p;//方式二

指针运算

例如:int  *p,i;

char  *q,c;

p = &i;q = &c;

p++,q++;



p++,q++;//执行完成后

因为p指向的int型占用两个字节空间(一般情况),自加一后指向1002,而char型占用一个字节,所以q指向2001


比较运算:p>q   //为假(使用上面的程序)


int a[10];

int *p,*q;

p = &a[0];//或p=a;

q = &a[9];//或p = a+9;

求p<q,p>q为真为假?

由图可知,p<q为真


总结:两个运算符:

*   : 求其后内存地址中的内容

&  :求变量的内存地址

下面一个小程序总结

main()

{

int a,b;

int *pointer_1,*pointer_2;

a = 100;

b = 10;

pointer_1 = &a;

pointer_2 = &b;

printf("%d,%d\n",a,b);

printf("%d,%d",*pointer_1,*pointer_2);


}

运行结果是100,10

                  100,10

用图形表示为:(图中p1,p2分别表示pointer_1,pointer_2)



以下是几个变化:

1.执行语句p2 = &*pointer_1后,变为下图形式,这时,*pointer_1为a,*p2为a,p1 = p2 = &a

2.“&*pointer_1”的含义?

3.(*pointer_1)++相当于什么?

4.*&a的含义?



下一篇:http://blog.csdn.net/qmhlan/article/details/6640481(指针系列)


原创粉丝点击