龙空技术网

C 语言函数名及对函数名取地址的区别和联系

编程黑科技 422

前言:

此刻小伙伴们对“c语言中引用的用法有哪些类型”可能比较珍视,同学们都想要了解一些“c语言中引用的用法有哪些类型”的相关内容。那么小编也在网上汇集了一些对于“c语言中引用的用法有哪些类型””的相关知识,希望大家能喜欢,看官们快快来学习一下吧!

在 C 语言中,函数可以像变量一样具有地址。函数的地址可通过在函数名前面加上 & 符号来获取。函数名作为函数的首地址,因此在使用函数指针时,可以直接使用函数名作为指针变量,但指向函数的地址和函数名的类型不一致,更直白点说,sizeof() 结果不一样的。

以下是C语言中函数名和取地址的区别和联系:

1. 函数名是函数的标识符,用于在程序中引用函数。它是函数的名称,可以用作函数调用或函数定义中的标识符。例如,int add(int a, int b) 中的 add 就是函数名。

2. 取地址操作符 & 用于获取变量或函数的地址。对于函数,使用 & 操作符可以获取函数的地址。例如, &add 将返回函数 add 的地址。

3. 函数名本身就是函数的地址。在大多数情况下,可以直接使用函数名作为函数指针变量。例如,int (*ptr)(int, int) = add 和 int (*ptr)(int, int) = &add 是等价的;

4. 函数指针可以用于在程序中动态地调用不同的函数。通过将函数指针作为参数传递给其他函数,可以实现回调函数和动态函数调用等功能。

5. 函数指针的类型必须与函数的声明匹配一致。函数指针的类型包括返回类型和参数类型。例如,函数 add 的声明是 int add(int a, int b) ,则相应的函数指针类型为 int (*)(int, int)。

总结起来,C 语言中函数名是函数的标识符,用于引用函数;取地址操作符 & 用于获取函数的地址;函数名本身就是函数的地址,可以直接使用函数名作为函数指针变量;函数指针可以用于动态调用不同的函数。

// function.c// 编译及运行// gcc function.c -o function && ./function// 预期结果// p:0x558119c5a169 q:0x558119c5a169// sizeof(test):1 sizeof(&test):8#include <stdio.h>void test() {    printf("test\n");}int main(int argc, char const *argv[]){    void (*p)() = test;    void (*q)() = &test;    printf("p:%p q:%p\n", p, q);    printf("sizeof(test):%ld sizeof(&test):%ld\n", sizeof(test), sizeof(&test));        return 0;}

C 语言

标签: #c语言中引用的用法有哪些类型 #c语言中void main和int main的区别 #c语言中函数的类型 #c语言o是什么意思 #c语音o是什么意思