c语言 结构体为什么没有地址
时间: 2023-11-08 14:31:51 浏览: 38
C语言结构体是一组相关的数据项的集合,这些数据项可以是不同的数据类型。结构体在内存中是以连续的方式存储的,所以结构体变量的地址就是结构体第一个元素的地址。因此,结构体没有地址的说法是不准确的。可能是你在某种情况下遇到了一些奇怪的问题,导致您认为结构体没有地址。如果您可以提供更具体的情况,我将尽力解决您的问题。
相关问题
c语言结构体改为非结构体
C语言结构体可以通过将其成员逐个提取出来,赋值给相应的变量来实现改为非结构体的效果。下面是一个示例:
```c
#include <stdio.h>
struct Person {
char name[20];
int age;
};
int main() {
struct Person p1;
p1.age = 25;
strcpy(p1.name, "John");
// 将结构体成员提取出来,赋值给相应的变量
char name[20];
int age;
strcpy(name, p1.name);
age = p1.age;
printf("Name: %s\n", name);
printf("Age: %d\n", age);
return 0;
}
```
这段代码中,我们定义了一个名为`Person`的结构体,包含了一个`name`成员和一个`age`成员。然后我们创建了一个`p1`结构体变量,并给其成员赋值。接着,我们将结构体成员逐个提取出来,赋值给相应的变量`name`和`age`。最后,我们打印出这两个变量的值。
这样,我们就实现了将C语言结构体改为非结构体的效果。
c语言结构体成员函数取地址
在C语言中,结构体不支持直接定义成员函数。然而,我们可以通过指针和函数指针来模拟实现结构体的成员函数。为了取得结构体成员函数的地址,我们可以使用指针和箭头运算符(->)。假设有一个指向结构体变量的指针p,我们可以通过p->成员函数名来取得成员函数的地址。这样可以使我们能够在C语言中模拟出类似于面向对象语言中的成员函数的功能。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)