# c-core_tutorial **Repository Path**: Vennasia/c-core_tutorial ## Basic Information - **Project Name**: c-core_tutorial - **Description**: C语言核心教程 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-01 - **Last Updated**: 2022-10-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Linux核心代码是C语言编写而成,系统api也是C语言的api,绝大多数linux发行版的图形界面软件也是基于GNOME,而GNOME也是C语言开发的 Linux一直是坚定的C支持者, 只要后台服务 和 嵌入式领域仍然由linux主导,C语言就仍然是最受开发者膜拜和追捧的语言 ## todo ## >数组、函数等非基本数据类型 为什么很多情况下的操作都可以通过指针来完成?(见11-array\04-string\04.string.c) 从底层编译、运行分析 ```c printf("%d\n",(&Add)(1,2)); ``` ```c int array[] = {0, 1, 2, 3, 4}; int *p = array; //没错 array其实是一个指针(地址), 并且是不可修改的 ↓ //array = (int *)100; //Array type 'int [5]' is not assignable //array其实就等价于 //int *const array_p = array; PRINT_INT(*(array+2)); //*(array+2): 2 PRINT_INT(*(p + 3)); //*(p + 3): 3 /** ↑推荐*/ PRINT_INT(*(array + 3)); //*(array + 3): 3 PRINT_INT(*(3 + array)); //*(3 + array): 3 PRINT_INT(array[3]); //array[3]: 3 /** ↑推荐*/ PRINT_INT(p[3]); //p[3]: 3 PRINT_INT(3[array]); //3[array]: 3 // not recommend ``` ```c //综上 因为字符串也是数组 So : //char s[] = "Hello String!"; //↕等价 char *s = "Hello String!"; //↑等同于上面 int *p = {0, 1, 2, 3, 4}; //但C里并不支持这样直接用 数组字面量 给指针赋值 //但支持用 字符串字面量 直接给指针赋值 (因为编辑器会为字符串字面量自动加上\0作为结束标志符) printf("%s", s); char *sa [] = {"China","French","America","German"}; //↑ 由于[ ] 的优先级高于* 所以a先和 [ ]结合, //他还是一个数组,数组中的元素才是char * //前面讲到char * 是一个变量,保存的地址 printf("%p %p %p %p\n",sa[0],sa[1],sa[2],sa[3]); ``` ## > setlocale、 中文字符、 宽字符、 fopen 之间的关系 > >18-io\12.count_characters.c > >02-garbled\main.c ## windows下使用conan下载gtk 但会报错 ```shell script Configuration: [settings] arch=x86_64 arch_build=x86_64 build_type=Release compiler=Visual Studio compiler.runtime=MD compiler.version=16 os=Windows os_build=Windows [options] [build_requires] [env] ERROR: gtk/3.24.24: Invalid configuration: GTK recipe is not yet compatible with Windows. Contributions are welcome. ```