C语言学习(11)

时间:2020-05-30
本文章向大家介绍C语言学习(11),主要包括C语言学习(11)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

C语言的关键字

static、const、typedef、extern、define……

动态内存分配:malloc、calloc。realloc分配的内存

  (1)static和extern配合

   第一种修饰变量

    修饰全局变量:正常情况下(没有用static修饰)全局变量可以在定义它的文件中使用,也能在其它文件中使用(extern声明一下即可);

     static修饰了全局变量,相当于限制了全局变量的作用范围(该全局变量只能用于定义的那个文件,其它文件不能使用,哪怕extern声明也不行)

    修饰局部变量:(实际开发往往用来修饰统计变量) 表示这个局部变量只能被初始化一次;

   第二种修饰函数

    正常情况下(没有用static修饰)函数可以在定义它的文件中使用,也能在其它文件中使用(extern声明一下即可);

    static修饰了函数,相当于限制了函数的作用范围(该函数只能用于定义的那个文件,其它文件不能使用,哪怕extern声明也不行);

  (2)extern

   第一种:声明外部的全局变量;

   第二种:声明外部的函数 ;

  (3)const

   第一种:修饰常量(常量是只读,不能修改)

    const  int  a=9;  //定义了一个常量a;

   第二种:修饰指针 

    int  a=99;

    写法一  const int  *p=&a;      //写法一和写法二是等价,表示这个指针不能修改它指向的地址中的内容(实际开发中,防止指针修改你地址中的内容)

    写法二  int const  *p=&a; 

    写法三  int *const p=&a; //p可以访问a的值,也能修改a的值,但是不能指向其它变量的地址(你可以认为p跟a的地址捆绑在一起了)

  (4)typedef  类型重定义

    作用:给C语言原本的数据类型改个名字(增强可读性,便于移植程序)

    u8 --》类型没有见过  typedef  unsigned  char u8;

  写法一:给基本数据类型换名字

    typedef  int   zhengshu;

  写法二:给指针换名字

    公式: typedef  指针原本的定义; 

    typedef  char *pp;   //给char *换个名字叫做pp, pp不是变量名,是类型名

    typedef  char (*p)[10];  //给char (*)[10]数组指针换了名字,叫做p   p不是变量名,是类型名

  写法三:给数组换名字

    公式: typedef  数组原本的定义;

    typedef  char  buf[10];  //buf不是数组名,是类型名  char [10]类型 

 1 #include <stdio.h>
 2 //把int换个名字
 3 typedef int zhengshu;  //zhengshu以后作为int直接使用
 4 typedef char *pp;  //pp以后可以作为char *类型直接使用
 5 typedef char (*charpp)[10]; //charpp以后可以作为char (*)[10]类型直接使用
 6 typedef int array[10];  //array以后可以作为int [10]类型直接使用
 7 int main()
 8 {
 9     int a=99;
10     zhengshu b=88;  //等价于int b;
11     printf("b is:%d\n",b);
12     
13     //传统定义char *指针  char *p=buf;
14     char buf[10]="hello";
15     pp p=buf; //char *p=buf
16     printf("p is:%s\n",p);
17     
18     //传统定义char (*)[10]
19     charpp point=&buf;  //char (*point)[10]=&buf
20     
21     //传统定义数组  int c[10];
22     array c;  // int c[10]
23     c[0]=99;
24     c[1]=88;
26 }

C语言主函数传参

  C语言主函数的写法:

  void  main()

  int   main()

  int   main(int argc,char **argv)  //  ./a.out   hello    hehe

  int   main(int argc,char *argv[])

  argc --》参数个数、argv[0] --》第一个参数、argv[1] --》第二个参数。

  注意:主函数传参,传递的参数默认当成字符串处理

原文地址:https://www.cnblogs.com/xiaojian98/p/12992612.html