文章目录

茶屋Teahouse

Every time you lie my place

又是指针!函数与指针的化学反应 有更新!

前言 学了这么久指针,发现它是真的包罗万象,不愧为C语言的精髓 指针函数 和之前的指针数组一样,指针数组是个数组,里面的元素都是指针;指针函数也类似,指针函数是个函数,而这个函数的返回值是指针 写法也没差太多 like: int* pointfunction(void); int * pointfunction(void); int *pointfunction(void); 这三种写法哪一种都可以,第一种更直观一点,在阅读代码时也好理解 例子 char *getWord(char); char *getWord(char c) { switch(c) { case 'A': return "Apple"; case 'B': return "Banana"; case 'C': return "Cat"; case 'D': return "Dog"; default: return "None"; } } 输入一个字符,按照字符返回对应的字符串。因为C语言中没有字符串数据类型,所以此函数返回的实际上是字符数组的指针 注意 指针函数不能使用局部指针变量作为返回值 因为函数的局部变....

常量和指针不得不说的秘密 有更新!

前言 520 'a' 3.14 常量是固定值,在程序执行期间不会改变;变量的值是可以改变的,根据指针我们可以知道,变量并不是直接指向数据,而是指向对应数据的内存地址,如果更改变量的值,实际上只是改变了变量所指向的地址,而地址里的值是没有改变的。 #define NAME "bogendihong" #define PI 3.14 #define 宏定义:C语言允许用一个标识符来表示一串数据,称为“宏”。被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”(上述代码中的 NAME、PI),都用宏定义中的数据去替换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令去完成的。宏代换是由预处理程序自动完成的。 #include <stdio.h> #define PI 3.14 int main() { printf("%f\n", PI); // printf("%f\n", 3.14); PI = 3.1415; // 3.14 = 3.1415; printf("%f\n", PI); return 0; } 常量是不可以被改....

详解scanf与getchar 有更新!

header scanf 和 getchar 都是c中的输入函数,但它们在用法和原理上有着不同的地方,在刚开始使用时犯了很多错误,写篇博客总结一下; scanf int scanf(const char *format, ...) scanf() 函数属于格式化函数,按照指定的既定格式从键盘上将数据输入到指定的变量中; 因为在 scanf() 语句中的格式中没有非格式字符在 "%d%d%d" 之间作为输入时的间隔,所以在输入时一定要用一个以上的空格或者回车作为两个输入数之间的间隔符 tips: scanf() 在读取数字时会自动跳过空格、制表符和换行符 实例1 int a, b, c; printf("input int: "); scanf("%d%d%d", &a, &b, &c); printf("%d%d%d", a, b, c); 实例2 在变量为数字类型时,程序运行一切正常,我们将变量换成字符试试 char a, b, c; printf("please input num a:\n"); scanf("%c", &a); print....

visual studio编译失败: 无法打开xxxxx.exe进行写入 有更新!

原因 由于编译时出现错误,导致强制停止后调试并未完成,此时编译器仍然卡在上一次调试时生成的进程中,而 xxx.exe 文件仍被相关进程占用。此时,若进行下一次编译,程序将会尝试打开 xxx.exe 文件,并对其进行修改,但是该文件仍处于被占用状态,所以才会提示无法打开并写入的错误。 解决 只要将 xxx.exe 文件从进程中释放出来即可 把错误中提到的 xxx.exe 文件强制删除,令进程终结,然后重新编译即可 (例如: 火绒强制删除) 进入“任务管理器”,选择“进程”选项卡,进入对应的Visual Studio进程,并展开下拉三角,查看当前进程包含的线程项,如下图所示: (不过很可惜的是,我没有找到这个进程,或许是眼拙了) 引用:https://www.cnblogs.com/cvwyh/p/10319014.html