大家好,欢迎来到IT知识分享网。
auto、break、case、char、const、continue、default、do、double、else、enum、extern、float、for、goto、if、inline、int、long、register、restrict、return、short、signed、sizeof、static、struct、switch、typedef、union、unsigned、void、volatile、while、_Alignas、_Alignof、_Atomic、_Bool、_Complex、_Generic、_Imaginary、_Noreturn、_Static_assert、_Thread_local
C18关键字:
auto、break、case、char、const、 continue、default、do、double、else、 enum、extern、float、for、goto、 if、inline、int、long、register、 restrict、return、short、signed、sizeof、 static、struct、switch、typedef、union、 unsigned、void、volatile、while、_Alignas、 _Alignof、_Atomic、_Bool、_Complex、_Generic、 _Imaginary、_Noreturn、_Static_assert、_Thread_local
运算符:
1. 算术运算符:+、-、*、/、%(加、减、乘、除、取模) 2. 关系运算符:>、<、>=、<=、==、!=(大于、小于、大于等于、小于等于、等于、不等于) 3. 逻辑运算符:&&、||、!(与、或、非) 4. 位运算符:&、|、^、~、<<、>>(按位与、按位或、按位异或、按位取反、左移、右移) 5. 赋值运算符:=、+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=(赋值、加等于、减等于、乘等于、除等于、取模等于、按位与等于、按位或等于、按位异或等于、左移等于、右移等于) 6. 条件运算符:? :(三目运算符) 7. 其他运算符:sizeof(返回变量或数据类型的大小)、&(返回变量的地址)、*(指针变量声明时使用,表示指向某个地址的指针)
连接运算符:
是连接运算符,它可以将两个标识符连接成一个新的标识符。
#define NAME(x) name_x #define VAR(x) int var_x 那么在使用时,可以这样写: NAME(1) // 等价于 name_1 VAR(2) // 等价于 int var_2
特殊操作:
C18编译器是C语言的一种编译器,它具有一些特殊的操作,包括: 1. __asm:用于嵌入汇编代码。 2. __attribute__:用于指定变量或函数的属性,如对齐方式、可重入性等。 3. __interrupt:用于定义中断服务函数。 4. __far和__near:用于指定变量或函数的存储类型,如远程存储、近程存储等。 5. __packed:用于指定结构体或联合体的对齐方式,使其紧凑排列。 6. __data16和__code16:用于指定数据或代码的段地址为16位。 7. __generic:用于定义泛型函数。
关键字作用:
sizeof //获取对象占用内存字节数,用法 int big = sizeof(int); 类型//内存占用字节 值类型 double float int 字符型 char 用户类型 enum struct union 修饰 auto const extern long register short signed unsigned void volatile restrict static、switch、typedef、while、_Alignas、_Alignof、_Atomic、_Bool、_Complex、_Generic、_Imaginary、_Noreturn、_Static_assert、_Thread_local
C18如何输出变量的名字:
#define STR(x) #x #define PRINT_VAR_NAME(x) printf("变量名为:%s\n", STR(x)) int main() { int a = 10; PRINT_VAR_NAME(a); // 输出:变量名为:a return 0; }
字符串名启动同名函数:
在C语言中,可以通过函数指针来实现通过字符串名启动同名函数的功能。具体实现步骤如下: 1. 定义函数指针类型,例如: ``` typedef void (*FuncPtr)(void); ``` 2. 定义同名函数,例如: ``` void func1(void) { printf("This is func1.\n"); } void func2(void) { printf("This is func2.\n"); } ``` 3. 将同名函数的函数指针存储到一个哈希表中,例如: ``` #define MAX_FUNC_NUM 10 static const char* func_names[MAX_FUNC_NUM] = {"func1", "func2"}; static FuncPtr func_ptrs[MAX_FUNC_NUM] = {func1, func2}; static int hash(const char* str) { int hash_val = 0; while (*str) { hash_val = (hash_val << 5) + *str++; } return hash_val; } static FuncPtr get_func_ptr(const char* func_name) { int index = hash(func_name) % MAX_FUNC_NUM; if (strcmp(func_names[index], func_name) == 0) { return func_ptrs[index]; } return NULL; } ``` 4. 通过字符串名获取同名函数的函数指针,并调用该函数,例如: ``` const char* func_name = "func1"; FuncPtr func_ptr = get_func_ptr(func_name); if (func_ptr != NULL) { (*func_ptr)(); } ```
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/122624.html