zoukankan      html  css  js  c++  java
  • c语言学习随笔之指针(一)

    c语言的学习难点在于指针,但是指针也是c语言的精华所在,它可以间接的访问和修改其他对象的值。下面是我对指针学习的一个总结(有错误或者理解不当的地方希望高手指正)。

    1 指针也是一种变量

     明确指针和指针所指向的内存空间是两个不同的变量。

    2*p操作内存

     int a = 1,b=2,c=3;
     int *p;//*紧随着类型名出现,这是是声明一个变量,p是一个指针变量
     p = &a;
     *p = c;//出现在表达式的左边,相当于给p所指向的内存赋值。
     b = *p;//出现在表达式的右边。相当于向p指向的内存里面去取值。
     printf_s("c:%d ,b:%d ,*p:%d",c,b,*p );
     system("pause");

     输出结果:c:10,b:10,*p:10

    3 指针变量和它指向的内存块是两个不同的概念

    含义1 给p赋值p=0x1111; 只会改变指针变量值,不会改变所指的内容;p = p +1; //p++

    含义2 给*p赋值*p='a'; 不会改变指针变量的值,只会改变所指的内存块的值 

    4 指针是一种数据类型,是指它所指向的内存空间的数据类型

    含义1:指针步长(p++),根据所致内存空间的数据类型来确定

    p++=(unsigned char )p+sizeof(a);

    结论:指针的步长,根据所指内存空间类型来定

    指针的数据类型:指的是它所指向内存空间的数据类型。指针具有步长,其步长也是根据其指向的内存空间的数据类型来决定的。、

    5 错误使用的指针

    int*p=NULL;//空类型不能修改

    *P=2;

    int*p=”sad”;//常量不能修改

    *p=2;

  • 相关阅读:
    记一道乘法&加法线段树(模版题)
    2021CCPC网络赛(重赛)题解
    Codeforces Round #747 (Div. 2)题解
    F. Mattress Run 题解
    Codeforces Round #744 (Div. 3) G题题解
    AtCoder Beginner Contest 220部分题(G,H)题解
    Educational Codeforces Round 114 (Rated for Div. 2)题解
    Codeforces Global Round 16题解
    Educational Codeforces Round 113 (Rated for Div. 2)题解
    AtCoder Beginner Contest 182 F
  • 原文地址:https://www.cnblogs.com/weiqiangwaideshijie/p/5537419.html
Copyright © 2011-2022 走看看