黑马程序员--C语言基础-变量类型

来源:互联网 发布:买家可以开通淘宝客吗 编辑:程序博客网 时间:2024/06/06 03:08

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


学习内容:

</pre><p></p><p class="p1"><span class="s1"> 1.</span>标识符<span class="s1">:</span>函数<span class="s1">,</span>变量<span class="s1">,</span>常量等凡是需要起名字的<span class="s1">,</span>这个名字就叫标识符<span class="s1">.</span></p><p class="p1"><span class="s1">    </span>只允许使用字母<span class="s1">,</span>数字<span class="s1">,</span>下划线<span class="s1">,</span>不允许数字开头<span class="s1">,</span>字母区分大小写<span class="s1">,</span>不能与系统自带的关键字重复<span class="s1">,</span>在个别语言中的个别符号也可以使用<span class="s1">.</span></p><p class="p1"><span class="s1">    </span>现代<span class="s1">C</span>语言中一般使用驼峰命名<span class="s1">(</span>从第二个单词开始首字母大写<span class="s1">)</span>规则<span class="s1">,Jave,C++</span>等语言中<span class="s1">,</span>常量用驼峰命名规则<span class="s1">,</span>函数用帕斯卡命名规则<span class="s1">(</span>所有单词首字母大写<span class="s1">)</span></p><p class="p1"><span class="s1"> 2.</span>注释的使用<span class="s1">,</span>可以理清思路<span class="s1">,</span>而且后期维护容易理解代码<span class="s1">.</span></p><p class="p1"><span class="s1"> 3.</span>关键字分类<span class="s1">:</span></p><p class="p1"><span class="s1">    </span>基本数据类型</p><p class="p2">    void(<span class="s2">空</span>) int(<span class="s2">整数</span>) float(<span class="s2">单精度</span>) double(<span class="s2">双精度</span>) char(<span class="s2">字符</span>)</p><p class="p1"><span class="s1">    </span>类型修饰符</p><p class="p2">    long(<span class="s2">长类型</span>) short(<span class="s2">短类型</span>) signed(<span class="s2">有符号类型</span>,<span class="s2">正负号</span>) unsigned(<span class="s2">无符号类型</span>,<span class="s2">全是正数</span>)</p><p class="p2">    <span class="s2">复杂类型</span></p><p class="p2">    struct union enum typedef sizeof</p><p class="p1"><span class="s1">    </span>存储级别关键字</p><p class="p2">    aoto static register const extern volatile</p><p class="p2">    <span class="s2">跳转结构</span></p><p class="p2">    return continue break goto</p><p class="p2">    <span class="s2">分支结构</span></p><p class="p2">    if else switch case default</p><p class="p2">    <span class="s2">循环结构</span></p><p class="p2">    while do for</p><p class="p2"> 4.<span class="s2">常量</span></p><p class="p1"><span class="s1">    </span>在<span class="s1">C</span>语言中不可改变的数据<span class="s1">(</span>量<span class="s1">)</span>就是常量</p><p class="p1"><span class="s1">    </span>在<span class="s1">C</span>语言中有三种常量</p><p class="p1"><span class="s1">        </span>字面量<span class="s1">(</span>直接量<span class="s1">),</span>就是直接写出来的<span class="s1">,</span>从写法上就可以看出值与类型等<span class="s1">,</span>例如<span class="s1">:19,123.456</span>等</p><p class="p2">        <span class="s2">名字常量</span>(<span class="s2">宏定义</span>,<span class="s2">宏替换</span>),<span class="s2">语法</span>:</p><p class="p2">            <span class="s2">在代码一开始的位置写上</span></p><p class="p2">            #define <span class="s2">名字</span> <span class="s2">值</span></p><p class="p2">            <span class="s2">运行原理说明</span>:<span class="s2">程序要经过</span>:<span class="s2">编码</span>-><span class="s2">编译</span>-><span class="s2">链接</span>-><span class="s2">运行</span></p><p class="p1"><span class="s1">            </span>在编译的过程中<span class="s1">,</span>又分为一开始的预编译</p><p class="p1"><span class="s1">            </span>在预编译的时候<span class="s1">,</span>编译器会读取编码<span class="s1">,</span>并将使用到宏定义的地方用宏替换</p><p class="p2">        const <span class="s2">变量</span></p><p class="p2">            <span class="s2">宏替换有一定的缺陷</span>,<span class="s2">就提出来了</span>const<span class="s2">常量</span></p><p class="p2">            ? <span class="s2">类型说明符</span> ? <span class="s2">常量名</span> = <span class="s2">值</span>;</p><p class="p2">            const int pi = 3.14</p><p class="p2">    <span class="s2">字面常量</span>:</p><p class="p2">        1)<span class="s2">整数</span></p><p class="p2">        <span class="s2">十进制</span>:123 printf("%d")</p><p class="p2">        <span class="s2">八进制</span>:017(<span class="s2">八进制就是由</span>0,1,2,3,4,5,6,7<span class="s2">组成的数字</span>,<span class="s2">运算时满八进一</span>) printf("%o")</p><p class="p2">        <span class="s2">十六进制</span>:0xff(<span class="s2">十六进制由</span>0,1,2,...,9,a,b,c,d,e,f) printf("%x")</p><p class="p2">        <span class="s2">二进制</span>:0b111(<span class="s2">表示由</span>0<span class="s2">和</span>1<span class="s2">组成</span>)</p><p class="p2">        123l</p><p class="p2">        123u</p><p class="p2">        2)<span class="s2">小数</span> printf("%f%lf")</p><p class="p2">        <span class="s2">单精度</span>:   123.456f</p><p class="p2">        <span class="s2">双精度</span>:   123.456      1.1     3.14</p><p class="p2">        3)<span class="s2">字符</span> printf("%c")</p><p class="p1"><span class="s1">        </span>字符常量就是一个用单引号括起来的一个字符<span class="s1">,</span>例如<span class="s1">: 'a', '0'</span></p><p class="p1"><span class="s1">        </span>注意不允许有空的<span class="s1">,</span>例如<span class="s1">'',</span>这个是错误的</p><p class="p3"> </p><p class="p2">        <span class="s2">如果要打印单引号怎么办</span>?   '''</p><p class="p1"><span class="s1">        </span>单引号表示字符的界定<span class="s1">,</span>使用反斜线<span class="s1">\</span>表示转义</p><p class="p2">        <span class="s2">一个</span> \' <span class="s2">表示几个字符</span>?</p><p class="p2">        <span class="s2">常见的转义字符</span>:\'  \"  \\  \n(<span class="s2">换行</span>)  \r(<span class="s2">回车</span>)</p><p class="p3"> </p><p class="p2">        4)<span class="s2">字符串</span> printf("hello")</p><p class="p2">            "hello"</p><p class="p3"></p><p class="p2"> 5.<span class="s2">变量</span></p><p class="p2">    int num;    // <span class="s2">定义了一个变量</span></p><p class="p2">    num = 10;   // <span class="s2">将数字</span>10<span class="s2">存储到</span>num<span class="s2">中</span></p><p class="p1"><span class="s1">    // </span>使用变量获取里面的值就是用这个变量名代替具体的数据</p><p class="p1"><span class="s1">    </span>变量在程序运行过程中<span class="s1">,</span>会生成临时的数据</p><p class="p1"><span class="s1">    // </span>用变量存储这些数据<span class="s1">,</span>进行使用</p><p class="p3">        </p><p class="p2">        <span class="s2">补充</span></p><p class="p1"><span class="s1">    1)</span>可以一次性定义多个变量</p><p class="p2">        int num1, num2, num3;</p><p class="p1"><span class="s1">        </span>多个变量间使用逗号隔开<span class="s1">,</span>最后结束要用分号</p><p class="p1"><span class="s1">        </span>这些变量都是同一个类型的</p><p class="p3"> </p><p class="p1"><span class="s1">    2)</span>定义变量的时候<span class="s1">,</span>允许对变量做初始化</p><p class="p2">        int num = 10;</p><p class="p1"><span class="s1">        </span>变量的使用<span class="s1">,</span>一定要先声明<span class="s1">(</span>定义<span class="s1">),</span>再赋值<span class="s1">(</span>初始化<span class="s1">),</span>后使用</p><p class="p1"><span class="s1">        </span>除非你的变量在创建后就一直等待被赋值</p><p class="p3"> </p><p class="p1"><span class="s1">    3)</span>在一次性定义多个变量的时候<span class="s1">,</span>允许作部分初始化和全部初始化</p><p class="p2">        int num1 = 10, num2 = 12, num3 = 14;</p><p class="p2">        int num1 = 10, num2, num3 = 14;</p><p class="p2">        printf("%d\n", num1);</p><p class="p2">        printf("%d\n", num2);</p><p class="p2">        printf("%d\n", num3);</p><p class="p1"><span class="s1"> 6.</span>变量的作用域</p><p class="p1"><span class="s1">    </span>变量的可以使用的范围称为变量的作用域</p><p class="p2">    <span class="s2">规则</span>:</p><p class="p1"><span class="s1">        </span>变量所处的位置<span class="s1">,</span>从定义开始<span class="s1">,</span>到这个位置的结束<span class="s1">,</span>都可以使用该变量</p><p class="p2">    <span class="s2">变量的位置</span>:</p><p class="p1"><span class="s1">        </span>如果将变量定义到函数中<span class="s1">,</span>这个位置用<span class="s1">{}</span>界定<span class="s1">,</span>这个就是局部变量</p><p class="p1"><span class="s1">        </span>如果变量是写在函数外的<span class="s1">,</span>那么就是全局变量<span class="s1">,</span>这个变量在整个文件中<span class="s1">,</span>从定义开始到文件结束都可以使用</p><p class="p3"> </p><p class="p2"> 7.printf<span class="s2">函数</span></p><p class="p2">    <span class="s2">语法</span></p><p class="p2">        printf("<span class="s2">格式化字符串</span>"[, <span class="s2">参数</span>, <span class="s2">参数</span>, ...]);</p><p class="p2">    <span class="s2">功能</span></p><p class="p2">        <span class="s2">打印格式化字符串</span></p><p class="p1"><span class="s1">    </span>格式化字符串<span class="s1"> </span>就是一个普通的字符串加上一些格式化字符</p><p class="p1"><span class="s1">    </span>格式化字符<span class="s1"> </span>一般表示一个具体的意义的数据的空位</p><p class="p3"> </p><p class="p1"><span class="s1">    </span>一个格式化字符传中<span class="s1">,</span>可以有多个格式化控制字符<span class="s1">,</span>依次用参数进行替换</p><p class="p3"> </p><p class="p1"><span class="s1">    </span>深入研究一下格式化控制字符</p><p class="p2">        %[-][0][<span class="s2">位数</span>][.<span class="s2">小数长度</span>]{d|f|c}</p><p class="p1"><span class="s1">    </span>科技类的图书中<span class="s1">,</span>表示语法的<span class="s1">,</span>用<span class="s1">[]</span>表示可选<span class="s1">,{}</span>表示必须的<span class="s1">,|</span>表示或者</p><p class="p1"><span class="s1">    </span>此处<span class="s1">-</span>表示左对齐方式<span class="s1">,</span>不写默认就是右对齐</p><p class="p1"><span class="s1">    </span>此处的<span class="s1">0</span>表示默认填充字符</p><p class="p1"><span class="s1">    </span>此处的位数<span class="s1">,</span>是指这个格式控制字符的坑占几个字符的位置</p><p class="p1"><span class="s1">    .</span>小数位数<span class="s1">,</span>用于表示浮点数时<span class="s1">,</span>保留小数的位数</p><p class="p2">    d<span class="s2">表示整数</span></p><p class="p2">    f<span class="s2">表示小数</span></p><p class="p2">    c<span class="s2">表示字符</span></p><p class="p2">    s<span class="s2">表示字符串</span></p><p class="p2">    <span class="s2">前面加</span>l<span class="s2">表示</span>long<span class="s2">修饰</span></p><p class="p2">    u<span class="s2">表示无符号</span></p><p class="p3"> </p><p class="p1"><span class="s1">    </span>如果使用<span class="s1"> %p </span>表示打印地址</p><p class="p3"> </p><p class="p2">    <span class="s2">如何打印</span>%</p><p class="p2">    printf("%%\n");</p><p class="p2"> 8.scanf<span class="s2">函数</span></p><p class="p1"><span class="s1">    </span>是允许用户输入数据<span class="s1">,</span>并将数据赋值给变量的函数</p><p class="p2">    <span class="s2">语法</span>:</p><p class="p2">        scanf("<span class="s2">格式化字符串</span>", <span class="s2">变量的地址</span>);//<span class="s2">用</span>&<span class="s2">取变量的地址</span></p><p class="p2">    <span class="s2">重要</span>:</p><p class="p1"><span class="s1">        </span>格式化字符串<span class="s1">,</span>表示输入的内容的一个格式校验</p><p class="p2">    scanf<span class="s2">的一些使用案例</span></p><p class="p1"><span class="s1">        scanf</span>函数在<span class="s1"> </span>输入数字时<span class="s1"> </span>会默认的忽略输入时两端的回车<span class="s1">,</span>空格等空白字符</p><p class="p1"><span class="s1">        scanf</span>函数在输入数字时如果没有分割的符号用回车代替</p><p class="p1"><span class="s1">        scanf</span>函数在输入数字时<span class="s1">,</span>空格格式可以用回车代码</p><p class="p1"><span class="s1">        scanf</span>函数在输入的时候<span class="s1">,</span>数字与字符混合输入时<span class="s1">,</span>要注意逗号与空格的意义<span class="s1">,</span>一般会加一个<span class="s1">temp</span>变量来吸收中和回车造成的缓存多余字符<span class="s1">.</span></p><p class="p1"><span class="s1">        scanf</span>函数在给变量赋值时<span class="s1">,</span>会从缓存中取对应的数据<span class="s1">,</span>如果数据类型不符<span class="s1">,</span>将不取值<span class="s1">,</span>直接返回结果<span class="s1">.</span></p><p class="p2">    scanf<span class="s2">原理</span>:</p><p class="p2">        scanf(.....) {</p><p class="p2">        <span class="s2">从缓存中获取数据</span></p><p class="p2">        <span class="s2">如果</span> <span class="s2">没有数据</span></p><p class="p1"><span class="s1">        </span>调用阻塞的函数<span class="s1">,</span>等到用户输入<span class="s1">,</span>在从缓存中取数据</p><p class="p3"> </p><p class="p1"><span class="s1">        </span>拿到数据后将数据与格式化字符串比较</p><p class="p1"><span class="s1">        </span>获得的字符<span class="s1"> = </span>将匹配到的字符从缓存中取出</p><p class="p3"> </p><p class="p2">        <span class="s2">如果格式字符串是</span>%d</p><p class="p1"><span class="s1">        </span>那么就调用转换的函数<span class="s1">,</span>将字符串转换成数字</p><p class="p1"><span class="s1">        </span>赋值给地址指向的变量</p><p class="p2">        <span class="s2">否则</span>,<span class="s2">如果格式字符串</span>%c</p><p class="p1"><span class="s1">        </span>那么直接将数据赋值给地址表示的变量</p><p class="p2">        <span class="s2">否则</span>, ... %f</p><p class="p2">        ... %s</p><p class="p2">        ...</p><p class="p2">        }</p><p class="p1"><span class="s1">        </span>一个数字和字符混合输入的实例<span class="s1">:</span></p><p class="p3"> </p><p class="p2"></p><p class="p3"> </p><pre name="code" class="objc"> #include <stdio.h>  int main(int argc, const char * argv[]) {     // 有些时候输入一些东西    // 简单计算器    // 1输入数字    // 2输入运算符    // 3输入数字     int num1, num2;         // 定义两个整数变量,用于接收数字    char oper, temp;        // 字符变量,用于接收运算符     printf("请输入数字:");    scanf("%d", &num1);     // 循环中和掉所有的回车    scanf("%c", &temp);     printf("请输入运算符:");    scanf("%c", &oper);     printf("请输入数字:");    scanf("%d", &num2);    scanf("%c", &temp);     // ...     printf("num1 = |%d|\noper = |%c|\nnum2 = |%d|\n", num1, oper, num2);      return 0; }

 

 

 

 

 */


0 0
原创粉丝点击