![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
Sany 何灿
这个作者很懒,什么都没留下…
展开
-
什么是函数指针 | C语言
函数指针(Function Pointer)是指向函数的指针变量。在很多编程语言中,函数被视为一种可执行的代码块,而函数指针则是一个指向这个代码块的指针,使得程序可以动态地调用不同的函数。它们允许程序在运行时根据需要选择要调用的函数,从而增加了程序的灵活性和可扩展性。在这个例子中,funcPtr 是一个指向接受两个整数参数并返回整数的函数的指针。在C和C++等编程语言中,函数指针通常是指向特定函数类型的指针,即函数原型和返回类型都一致的函数。函数指针的语法类似于变量指针,但是它指向的是函数而不是数据。原创 2023-08-27 10:37:37 · 725 阅读 · 0 评论 -
++i和i++的区别 | C语言
#include <stdio.h>int main(void) { int i, j, k; i = 0; // i++ 是先赋值,再加1 printf("i++=%d\n", i++); printf("i=%d\n", i); j = i++; printf("j=%d\n", j); i = 0; // ++i 是先加1,再赋值 printf("++i=%d\n", ++i); printf("i原创 2021-02-07 15:21:41 · 134 阅读 · 0 评论 -
联合 | C语言
原创 2021-02-06 21:09:31 · 101 阅读 · 0 评论 -
typedef | C语言
原创 2021-02-06 21:06:34 · 103 阅读 · 0 评论 -
结构 | 结构与函数 | C语言
原创 2021-02-06 13:56:54 · 106 阅读 · 0 评论 -
字符数组与字符指针的区别与应用 | C语言
字符数组:char job = "teacher";字符指针:char *job = "teacher";解析:上面两个声明中的job都可以用作字符串。任何期望传递字符数组与字符指针的函数都能够接受这两种声明的job作为参数。但是这两种job不能互换,两者也有很大的差异:区别:在声明为数组时,就像任意数组元素一样,可以修改存储在job中的字符。在声明为指针时,job指向字符串字面量,而字符串字面量是不可以修改的。在声明为数组时,job是数组名。在声明为指针时,job是指针变量,这个变量可原创 2020-11-18 18:51:00 · 244 阅读 · 0 评论 -
printf和scanf函数 -- 字符串字面量(字符串)的储存方式 | C语言
问题:当printf函数和scanf函数并且用字符串字面量作为参数时,传递的是什么呢?答案:是“字符串字面量”,printf函数和scanf函数都接收char *类型的值作为它们的第一个参数,可参考《scanf 中 & 的应用本质》。在C语言中,字符串字面量是作为数组来存储的,编译器会将它看作是char *类型的指针。如以下代码:printf("abc");当调用printf函数时,会传递"abc"的地址(即指向存储字母a的内存单元的指针)。拓展:本质上,C语言把字符串字面量作为字符原创 2020-11-18 15:55:26 · 518 阅读 · 0 评论 -
指针作为函数参数的作用 & const的作用 | C语言
问题一:为什么需要指针作为函数参数?回答:C语言中,用值进行函数的参数传递时,在函数中,用作实际参数的变量无法被函数改变。因此使用指向变量的指针作为参数,允许函数既可以读取变量,也可以修改变量。具体参考这篇文章《scanf 中 & 的应用本质》。问题二:const的作用?回答:当调用函数并且把指向变量的指针作为参数传入是,通常会假设函数将修改变量(否则,为什么函数需要指针呢?)。如以下程序:f(&x);可以使用const来表明函数不会改变指针参数所指向的对象。const应放置在形原创 2020-11-18 00:16:53 · 2626 阅读 · 0 评论 -
scanf 中 & 的应用本质 | C语言
问题1:如果scanf中没有&会怎样?回答:如果在调用scanf函数时忘记在变量前面放置符号&,最起码不会把从输入读进来的值存储到变量中,变量将保留原有的值(如果没有给变量赋初值,那么这个原有值可能是没有意义的)。拓展:&是取址运算符,如果x是变量,那么&x就是x在内存中的地址。对变量使用&运算符产生指向变量的指针。问题2:为什么scanf中需要&?回答:这个问题本质是<调用函数时,指针作为参数>,如在以下代码块中,必须把&放原创 2020-11-17 13:23:44 · 2328 阅读 · 2 评论 -
指针与内存地址管理的关系 | C语言
int 变量存的是 int 型的值,char 变量存的是 char 型的值,而指针,它是一种特殊的变量,存的是内存地址,按照这个模板可以把它理解为:“内存地址变量” 存的是 “内存地址”,等价于:“指针变量” 存的是 “内存地址”。操作系统进行资源调度时,会根据这些变量存的地址去请求和使用那个地址代表的内存区域,这就仿佛像是这个变量存的地址指向了某片内存,人们用 “指针” 来统称所谓的 “内存地址变量”。因此,任何跟指针有关的概念,都可以联系内存地址加以理解,二者必然有联系,数组与指针,函数与指针,都是转载 2020-11-08 10:59:18 · 517 阅读 · 0 评论 -
C 语言中全局变量、局部变量、静态全局变量、静态局部变量的区别
从作用域看:全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。局部变量也只有局部作用域,它是自动对象(auto),它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用执行转载 2020-11-05 10:57:16 · 305 阅读 · 0 评论 -
单引号和双引号的区别(字符串字面量 & 字符常量) | C语言
在 C 语言中,单引号与双引号是有很大区别的。在 C 语言中没有专门的字符串类型,因此双引号内的字符串会被存储到一个数组中,这个字符串代表指向这个数组起始字符的指针;而单引号中的内容是一个 char 类型,是一个字符,这个字符对应的是 ASCII 表中的序列值。参考资料:https://www.runoob.com/cprogramming/c-constants.html...原创 2020-11-05 09:16:37 · 7302 阅读 · 0 评论 -
全局变量和局部变量在内存中的区别 | C语言
全局变量保存在内存的全局存储区中,占用静态的存储单元;局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元。C语言经过编译之后将内存分为以下几个区域:(1)栈(stack):由编译器进行管理,自动分配和释放,存放函数调用过程中的各种参数、局部变量、返回值以及函数返回地址。操作方式类似数据结构中的栈。(2)堆(heap):用于程序动态申请分配和释放空间。C语言中的malloc和free,C++中的new和delete均是在堆中进行的。正常情况下,程序员申请的空间在使用结束后应该释放,若原创 2020-11-04 16:20:15 · 1365 阅读 · 0 评论 -
gcc 进行 c 语言编译步骤
gcc 进行 c 语言编译分为四个步骤:1.预处理,生成预编译文件(.i 文件):gcc –E hello.c –o hello.i2.编译,生成汇编代码(.s 文件):gcc –S hello.i –o hello.s3.汇编,生成目标文件(.o 文件):gcc –c hello.s –o hello.o4.链接,生成可执行文件:gcc hello.o –o hello...原创 2020-11-04 11:40:24 · 1507 阅读 · 0 评论