写一段c语言结构体赋值指针的代码
时间: 2023-11-08 08:56:36 浏览: 35
假设有如下结构体定义:
```c
typedef struct {
int age;
char name[20];
} Person;
```
则可以通过以下代码创建一个指向Person结构体的指针,并赋值:
```c
Person person1 = {20, "John"};
Person *ptr_person1 = &person1; // 将指针ptr_person1指向person1的地址
printf("Person's name: %s, age: %d\n", ptr_person1->name, ptr_person1->age); // 输出:Person's name: John, age: 20
```
相关问题
写一段完整的包含指针和结构体的c语言代码
好的,以下是一个完整的包含指针和结构体的 C 语言代码示例:
```
#include <stdio.h>
#include <stdlib.h>
// 定义一个结构体
struct Person {
char name[20];
int age;
};
// 声明一个函数,用于创建 Person 结构体并返回其指针
struct Person* createPerson(char* name, int age) {
// 动态分配一个 Person 结构体的内存,并将其指针赋值给 p
struct Person* p = (struct Person*) malloc(sizeof(struct Person));
// 设置 p 指向的结构体的字段值
strcpy(p->name, name);
p->age = age;
// 返回 p 指针
return p;
}
int main() {
// 调用 createPerson 函数创建一个 Person 结构体并获取其指针
struct Person* p = createPerson("Tom", 25);
// 输出 p 指向的结构体的字段值
printf("Name: %s\n", p->name);
printf("Age: %d\n", p->age);
// 释放分配的内存空间
free(p);
return 0;
}
```
在这个代码示例中,我们定义了一个名为 Person 的结构体,它包含两个字段:一个字符串类型的 name 和一个整数类型的 age。然后,我们声明了一个名为 createPerson 的函数,它接受一个字符串类型的 name 和一个整数类型的 age 作为参数,并返回一个指向 Person 结构体的指针。在 createPerson 函数中,我们使用 malloc 函数动态地分配了一个 Person 结构体的内存,并将其指针赋值给 p。接着,我们使用指针操作符 -> 访问 p 指向的结构体的字段,并设置它们的值。最后,我们返回 p 指针。在 main 函数中,我们调用 createPerson 函数来创建一个 Person 结构体并获取其指针。然后,我们输出 p 指向的结构体的字段值,并使用 free 函数释放了分配的内存空间。
C语言结构体指针加一
C语言结构体指针加一会使指针指向下一个结构体变量。因为结构体中的所有组成部分都存放在一段连续的内存中,所以指向结构体的指针就是结构体第一个成员的地址。指针加一时,会根据结构体的大小自动增加相应的字节数,使指针指向下一个结构体变量的第一个成员的地址。下面是一个例子:
```c
#include <stdio.h>
typedef struct test {
int p1;
int p2[10];
int p3;
} test_struct;
int main() {
test_struct t1, t2; test_struct *p = &t1;
p->p1 = 1;
p->p2[0] = 2;
p->p3 = 3;
printf("t1: p1=%d, p2[0]=%d, p3=%d\n", t1.p1, t1.p2[0], t1.p3);
p++;
p->p1 = 4;
p->p2[0] = 5;
p->p3 = 6;
printf("t2: p1=%d, p2[0]=%d, p3=%d\n", t2.p1, t2.p2[0], t2.p3);
return 0;
}
```
输出结果为:
```
t1: p1=1, p2[0]=2, p3=3
t2: p1=4, p2[0]=5, p3=6
```
可以看到,通过指针p对结构体t1和t2进行了赋值,并且通过指针p对结构体进行了加一操作,使得指针p指向了下一个结构体变量。最后输出了t1和t2的各个成员的值。