C高级的自我学习(5)

  • 静态函数

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

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

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

字符串常量

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

#include
#include
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
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))