3.141
2020-03-29 21:31
采纳率: 100%
浏览 618

有哪位大佬能告诉我在C语言中 指针变量 可以被static修饰吗?

就是在C语言中可不可以有"static int* p ;"这种方式定义指针变量。
如果可以效果是不是跟正常的静态变量"static int a;"一样?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • threenewbee 2020-03-29 22:27
    已采纳
    可以这么定义
    
    static int a;的意思是,a这个变量是静态的(下次调用这个函数,a还是之前的值)
    static int *p;的意思是,p这个指针是静态的(下次调用这个函数,p还是指向同一个地址,至于地址本身是否有效,里面的内容是不是变化,就不一定了)
    
    已采纳该答案
    3 打赏 评论
  • huhuren12 2020-03-30 08:59

    从效果上来说"static int* p ;"和"static int a;"效果确实是一样的,他们两个变量的作用域和生存期都是一样的,没有区别。
    只不过一个是正常变量,一个是指针变量而已,static int* p是指这个指针变量是静态的,如果没有重新赋值该指针,这个指针变量永远
    不会变,但是指针指向的地址的内容还是可以变的,,使用方法和正常的指针变量一样使用

    1 打赏 评论
  • cczhl 2020-03-30 20:44

    同意楼上的观点,区别就是一个是变量,一个是指针,a 和 p 的值不变。

    打赏 评论
  • qq_1457346882 2020-04-03 13:52

    指针好像没这么用过都用const修饰吧?

    打赏 评论

相关推荐 更多相似问题