c语言结构体指针
时间: 2023-07-09 08:12:28 浏览: 50
结构体指针是指向结构体变量的指针,其基本语法如下:
```c
struct 结构体名 *指针变量名;
```
例如,定义一个名为`Student`的结构体,包含学生姓名和年龄两个成员变量,同时定义一个指向`Student`结构体的指针变量`stu_ptr`,示例代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Student {
char name[20];
int age;
};
int main() {
struct Student stu = {"Tom", 18}; // 定义结构体变量stu并初始化
struct Student *stu_ptr = &stu; // 定义结构体指针并指向stu
printf("Student name: %s\n", stu_ptr->name); // 使用指针访问结构体成员
printf("Student age: %d\n", stu_ptr->age);
return 0;
}
```
输出结果为:
```
Student name: Tom
Student age: 18
```
使用结构体指针可以方便地对结构体成员进行访问和修改,同时也可以在函数间传递结构体变量的地址,避免了复制结构体的开销。
相关问题
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的各个成员的值。
c语言结构体指针是什么
以下是关于C语言结构体指针的介绍:
1. 结构体指针是指指向结构体变量的指针,可以通过结构体指针来访问结构体的成员。
```c
struct Person {
char name[50];
int age;
};
struct Person person1;
struct Person *personPtr;
personPtr = &person1;
```
2. 通过结构体指针访问结构体成员:
```c
strcpy(personPtr->name, "John");
personPtr->age = 30;
```
3. 结构体指针作为函数参数:
```c
void display(struct Person *p) {
printf("Name: %s\n", p->name);
printf("Age: %d\n", p->age);
}
display(personPtr);
```
4. 结构体数组指针:
```c
struct Person people[3];
struct Person *peoplePtr;
peoplePtr = people;
```
5. 结构体指针数组:
```c
struct Person *personArray[3];
```
6. 结构体的自引用与不完全声明:
```c
struct Self {
int a;
int b;
struct Self *s;
};
```