zoukankan      html  css  js  c++  java
  • c语言之问题集

    c语言 %-6d:6表示输出列宽是6个字符,
    如果实际输出的字符不足6个,则用空格补充其余的位置,
    如果实际输出大于6个字符,则按实际宽度输出,前面的负号表示在右边补空格
    如果没有负号则表示在左面补空格。
    数字是几就表是几个空格。
    即:

    printf("%-6d",123);

    输出的结果是(一个小数点表示一个空格):

      123...
    

    printf("%6d",123);

    输出的结果是(一个小数点表示一个空格):

    ...123
    如printf("%4d",12)输出的格式是__12(前面两个空格)printf("%4d",12345)就直接输出12345

    %2.5f 表示以浮点数格式输出变量的值,宽度为2,小数位数为5,宽度不够,以实际为准
    %m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。 
    %-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。

    关于printf函数的进一步说明:
    如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示,如:
    printf("%f%%", 1.0/3);
    输出0.333333%。

    error: cast from 'int*' to 'int' loses precision#

    这是因为Linux 64位系统上指针类型占用8个字节,而int类型占用4个字节,所以会出现loses precision。
    
    可以先将int* 转成long类型,long类型可以隐式类型转换到int类型,如下:
    
          int func() {
              int *p;
              p = //赋值
              return (long)p;
              }
    

    2019 4.11
    static int a 你可以理解成全局变量,如果你是在类A中声明的,
    那么你无论new 多少个A, 那么你访问A.a,都共享同一个值。
    而 int a, 在不同的A实例里的值是独立的。


    常量指针是指--指向常量的指针,顾名思义,就是指针指向的是常量,即,它不能指向变量,它指向的内容不能被改变,不能通过指针来修改它指向的内容,但是指针自身不是常量,它自身的值可以改变,从而可以指向另一个常量。
    指针常量是指--指针本身是常量。它指向的地址是不可改变的,但地址里的内容可以通过指针改变。它指向的地址将伴其一生,直到生命周期结束。有一点需要注意的是,指针常量在定义时必须同时赋初值。

    2.使用方法
    写法上的区别:
    常量指针:const 在之前 指针常量:const在之后。
    使用举例:
    (1) 常量指针使用:
    如 int b, c;
    int const a;
    a = &b;
    a = &c;
    都可以,唯独它指向的内容不能被修改。如:
    a=20;这是违法的!错误!
    (2) 指针常量使用
    如 int a ,b;
    int * const p = &a;
    表示p是一个常量指针它指向变量a的内存。指针常量不能再用p指向其他变量,如 p = &b; 错误!可以修改指向内存的值,如:* p = 20; 指针常量声明的时候必须像上式那样赋初值。
    指针常量也不能释放,用p指向NULL,即
    p = NULL;
    会在编译时报错
    /opt/test/test.c:649: error: assignment of read-only variable `p'
    还有一个记住他们不同形式的技巧!看const关键字,他后面的不可修改,如int * const a = &b; 后面是a,则说明a不能修改!
    int const * a = &b;后面是a则说明a不可被修改!


    int main (int argc,char const *argv[])中
    argc记录了用户在运行程序的命令行中输入的参数的个数。
    arg[]指向的数组中至少有一个字符指针,即arg[0].他通常指向程序中的可执行文件的文件名。在有些版本的编译器中还包括程序文件所在的路径。
    argc 是参数的个数,argv[]是参数,argv[0]是文件名,argv[1]是第一个参数...


    大括号的作用就是把括起来的语句看成是一个整体,你可以把它当成一条语句。
    如果if else while for这些判断或循环语句后面的执行语句只有一条,就可以省略大括号


    while(sanf("%d/%d/%d",&a,&b,&c)!=EOF)
    EOF=end of file 这回你知道什么意思了吧
    scanf函数的返回值说明。
    EOF就是-1,是在stdio.h里定义的。
    按照上面的说明,scanf函数只有在第一个参数为NULL(空指针)的情况下,才可能返回EOF,否则,返回成功格式化并赋值的参数个数(>=0)。

  • 相关阅读:
    UML简介
    Servlet过滤器基础及使用场景
    eclipse maven配置问题:org.apache.maven.archiver.mavenarchiver.getmanifest
    maven中的groupId和artifactId 区分
    Spring中的控制反转和依赖注入
    SQL语句、PL/SQL块和SQL*Plus命令之间的区别
    Mybatis核心类生命周期和管理
    MyBatis Generator 下划线转驼峰命名
    修改maven默认仓库(即repository)的路径
    MyBatis SqlSessionFactory的几种常见创建方式
  • 原文地址:https://www.cnblogs.com/luoyuliang/p/10584952.html
Copyright © 2011-2022 走看看