c语言自定义变量传不进去值
时间: 2024-09-10 09:28:29 浏览: 41
C语言 全局变量和局部变量详解及实例
5星 · 资源好评率100%
在 C 语言中,当你试图将一个自定义变量的值传递给函数时,需要明确地将这个变量作为参数传递。如果函数声明中没有对应类型的形参,那么你无法直接“传入”变量的值,因为 C 语言不是一种过程式编程语言,它不具备自动隐式参数传递的概念。
例如,如果你有一个自定义结构体 `Person`:
```c
typedef struct {
char name[50];
int age;
} Person;
void printPerson(Person p) { // 函数接收一个 Person 类型的参数
printf("Name: %s, Age: %d\n", p.name, p.age);
}
```
要在主函数中传递一个 `Person` 变量,你需要像下面这样做:
```c
int main() {
Person john = {"John", 25};
printPerson(john); // 直接传递变量
return 0;
}
```
如果没有显式定义形参,则无法将变量值“传入”,而是需要通过指针来间接访问:
```c
void printPerson(void *p) { // 如果函数原型未指定类型,可以接受 void* 指针
Person *person = (Person *)p; // 解引用指针
printf("Name: %s, Age: %d\n", person->name, person->age);
}
// 主函数中传递
main() {
Person john = {"John", 25};
printPerson(&john); // 通过地址传递
return 0;
}
```
阅读全文