美文网首页
C高级的自我学习(5)

C高级的自我学习(5)

作者: 酸菜牛肉 | 来源:发表于2016-12-10 16:38 被阅读8次
    • 静态函数

    默认情况下函数的声明是extern的,静态函数只是在声明他的文件当中可见,但是不能被其他文件所用。
    示例

    #include<stdio.h>
    void display();
    static void staticdis();
    int main(){
        display();
        staticdis();
        return 0;
    }
    //#include<stdio.h>
    void display(){
        staticdis();
        printf("display() has been called \n");
    }
    static void staticdis()
    {
        printf("staticdis() has been called\n");
    }
    

    静态函数的好处:
    1)其他文件中可以定义相同名字的函数,不会发生冲突;
    2)静态函数不能被其他文件所用;
    疑问:当把两个文件写在同一个函数中的时候,函数都能正常执行,问过老师后,当把文件分开使用时,不能正常编译,不明白静态函数不能被其他文件应用的意思

    字符串常量

    用字符串常量初始化指针和数组
    char *p = "breadfruit"

    #include<stdio.h>
    #include<string.h>
    int main(){
        char *p = "this is a example";
        char a[] = "gooseberry";
        strncpy(a,"black",5);
        printf("%s\n",p);
        printf("%s\n",a);
        return 0;
    }
    

    对字符串可以以数组的形式进行操作。

    强制数据类型转换特性

    1,两个数据类型不同的数据进行运算的时候,先要转换为相同的类型,较低类型转换为较高类型,然后再参加运算:int-->unsigned-->long-->double。
    2,赋值中的类型转换
    赋值时的类型转换属于强制转换

    • 无符号整数
    #include<stdio.h>
    int main(){
        unsigned a,b;
        int i,j;
        a = 65535;
        i = -1;
        j = a;
        b = i;
        printf("(unsigned)%u-->(int)%d\n",a,j);
        printf("(int)%d-->(unsigned)%u\n",i,b);
    }
    

    不能进行数据转换

    指针特性

    • 数据指针

    以指针直接操作内存多发生一下情况:
    1)某I/O芯片被定位在CPU的储存空间而非I/O空间,而且寄存器对应于某特定地址;
    2)两个CPU之间以双端口RAM通信,CPU需要在双端口RAM的特定单元,书写内容已在对方CPU产生中断;
    3)读取在ROM或FLASH的特定单元所烧录的汉字和英文字模。

    Shell的复习

    • 自己编写了尝试编写了一个,C语言编译和运行同时完成的一个shell脚本
    #!/bin/bash
    #opera.sh
    gcc $1 -o c
    ./c
    

    输入格式为:$./opera.sh test.c

    shell:查看参数

    #!/bin/bash
    #file.sh
    echo "Command received $# params."
    echo "Command:$0"
    echo "Arg1:$1"
    echo "Arg2:$2"
    echo "Arg3:$3"
    

    相关文章

      网友评论

          本文标题:C高级的自我学习(5)

          本文链接:https://www.haomeiwen.com/subject/rhzymttx.html