C语言指针总结

       指针一直是学习C/C++语言的一个重点与难点。只有熟练地掌握了指针,才可以说掌握了C语言,C语言的最吸引人的地方也是指针,因为它可以任意地操作内存,编写程序中有着极大地自由空间,因此,也有人说指针是C语言的灵魂。而且指针也是各大公司面试程序员的必考内容。现我将自己所学的关于指针的知识进行了总结,希望与大家一起学习。

1.指针事实上是一种数据类型,和int 基本类型一样。指针也是一种变量,占有内存空间,保存的是内存地址。

2.关于*p操作

(1)在声明指针中,“*”号表示所声明的变量是一个指针。

(2) 在指针使用时,“*”号表示操作指针所指向的内存空间中的值。

(3)当*p放在等号的左边时,相当于给内存赋值。

(4)当*p放在等号的右边时,相当于从内存中获取值。

<span style="font-size:18px;">int *p = NULL;//声明p是一个指针变量
int i = 3,j = 0;
p = &i;//p指向i所在内存
*p = 5;将p所指的内存的值改变为5,此时变量i的值也是5
j = *p;//将*p把指的内存空间的值(i的值)赋值给j</span>


注:指针变量和它所指向的内存块是两个不同的概念。

3.指针的数据类型是指它所指向的内存空间的数据类型。当指针步长自加的时候,是根据所指向的内存的数据类型来确定的。

若在32位的系统上,一个指向整型数据的指针,自加的话,是加4.

int *p = &I;
p ++;//<==>(unsigned int)p+sizeof(int);


4.通过指针来改变变量的值是指针的一个重要应用。这是指针作为函数参数的精华。函数调用时,n指针(形参)改变n-1指针(实参)的值。如:1级指针形参改变0级指针实参的例子。

Swap(int*a,int *b)
{
Int  p = *a;
*a = *b;
*b = p;
}//这样可以将实参的值也改变。

5.数组作函数参数的时候会退化为一个指针

void fun(int a[10])<<==>>void fun(int *a)//无论实参是包含多少个元素的数组,但作为函数参数只是把函数首地址传递给形参。


6.关于解决野指针的方案

(1)定义指针时,把指针变量赋值为null;

(2)释放内存时,先判断指针变量是否为null;

(3)释放内存完毕后,把指针变量重新赋值为null

       当然指针不仅仅只是这么简单,这只是指针的基础,但是其他指针的使用全部是建立在这基础之上,因此,熟练掌握指针的基础是十分必要的,并且加以利用,这样就可以解决在工作学习中遇到更加复杂指针的情况了。如有不当之处,请大家指出,相互学习,共同进步。

  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值