• C和指针 (pointers on C)——第三章——数据


    第三章 数据

    本章是非常重要的,在特定范围内使用、链接属性、存储类型。const、extern和statickeyword使用。几乎所有的公司是C++在采访的第一个问题。

    总结:

    具有external链接属性(包含external、internal、None)的实体在其它语言的术语里称为全局实体(global),全部cpp里的函数都能够訪问它。

    仅仅要声明的时候在函数体或代码块外部(包含main函数)。默认的链接属性都是external。

    假设声明的在代码块内部,说明它引用的是一个全局变量。

    具有external链接属性的实体总是具有静态存储类型(auto,static)。静态存储类型的数据在程序開始前就会创建,并在程序整个执行过程中始终存在。局部变量相反,在函数执行时才干创建。

    自己主动存储的原因:1、降低内存总占有量。

    2、在堆栈上分配能够有效地解决递归问题。

    表 作用域、链接属性、存储类型总结

    变量类型

    声明位置

    堆栈中?

    作用域

    声明Static?

    声明external?

    全局

    代码块外

    声明到文档结尾

    限制在本文档内訪问

    默觉得external

    局部

    代码块起始处

    整个代码块

    静态存储

    变为静态存储

    形參

    函数头

    整个函数

    不同意存在

    不同意

     

    警告:

    1、在声明指针变量时候採用easy误导的写法。

    Int *a, *b, *c;//good

    Int * a,b,c//仅仅有a是指向int的指针

    2、误解指针声明中初始化的含义。

    Char*message = “hello world!“//事实上赋值给了message,而不是*message

    相当于:

    Char *message;

    Message =“hello world!”

    3、不要依赖隐式声明,显式声明更清楚的表达程序的意图。

    枚举类型最好显式得定义一个整型的值,默认第一个字符的整型值为0,后面的值比前面的符号名的值大1。以此类推

    Enum week{Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};//Monday=0

    Enum week{Monday= 1, Tuesday = 2…};

    4、在定义类型的新名字时,使用typedef而不是#define。

    优势显而易见,当#define来创建新的类型名时,后者无法正确地处理指针类型。

    #defined_ptr_to_char char *

    d_ptr_to_chara, b;

    就像int* a, b;一样,正确声明了a,可是b却被声明成了一个字符。

    5、使用const声明能够避免变量发生变化。

    Int const  *ptr; //声明一个指向整型常量的指针

    Int *const  ptr;//声明一个指向整型的指针常量

    Int const *const ptr; //声明一个指向整型常量的指针常量

    6、使用名字常量而不是字面值常量

    如:#define MAX_ELEMENT 50

           Intconst MAX_ELEMENT = 50;

    前者是名字常量能够定义数组长度。而后者属于字面值常量,不能定义数组长度。

    7、不要在嵌套的代码块之间使用同样的变量名。

    8、除了实体的详细定义位置之外,在它的其它声明位置都使用externkeyword。

     

    问题15

    假定函数a声明了一个automatic的变量x,你能够在其它的function内訪问x,仅仅要你使用了以下这种声明。

    extern intx;

    对还是错?假设x被声明为static,对还是错?

    答:都错。变量仅仅能在自己的作用域訪问。不能在其它作用域訪问,x的作用域就是他的a函数。

    Static仅只有改变了它的存储类型。

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    Spring Boot自动配置
    Servlet、JSP总结(1)
    Spring MVC
    Springboot中的数据库事务
    数据库访问
    AOP
    全注解下的IOC
    spring boot入门
    安卓工程化开发笔记(2)
    2048功能说明模板
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4722153.html
Copyright © 2020-2023  润新知