zoukankan      html  css  js  c++  java
  • C语言指针学习

    指针的学习

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

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

    2.关于*p操作

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

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

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

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

     view plain copy
     <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.

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

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

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

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

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

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

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

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

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

    指针代码编写

    用动态数组编程输入任意m个班学生(每班n个学生)的某门课的成绩,计算最高分,并指出具有该最高分成绩的学生是第几个班的第几个学生。其中,m和n的值由用户从键盘任意输入(不限定m和n的上限值)。

  • 相关阅读:
    (打表+优化)简单的求和 -- zzuli -- 1783
    (动态规划)matrix -- hdu -- 5569
    (贪心)School Marks -- codefor -- 540B
    (简单广搜) Ice Cave -- codeforces -- 540C
    (单调队列) Bad Hair Day -- POJ -- 3250
    链接的伪类选择器
    css定位的三种选择器
    选择器分组
    css和html的三种结合方式 页内和页外
    html的Meta标签
  • 原文地址:https://www.cnblogs.com/lyx1996/p/7466547.html
Copyright © 2011-2022 走看看