c语言 ->是什么意思,举一个例子
时间: 2024-04-15 11:30:23 浏览: 19
好的,假设我们有一个结构体定义如下:
```
struct Person {
char name[20];
int age;
float height;
};
```
现在我们定义一个指向 Person 结构体的指针变量 p,然后通过动态内存分配函数 malloc() 分配一块内存,并将指针 p 指向这块内存。接着,我们可以使用 -> 运算符来访问结构体中的成员,例如:
```
struct Person *p = (struct Person *) malloc(sizeof(struct Person));
strcpy(p->name, "John");
p->age = 25;
p->height = 1.75;
```
在上面的代码中,我们使用了 -> 运算符来访问结构体 p 中的成员 name、age 和 height,并为它们赋值。这相当于使用 (*p).name、(*p).age 和 (*p).height 这样的方式来访问结构体中的成员,但是使用 -> 运算符更加简洁和易读。
相关问题
C语言的->是什么意思
在C语言中,箭头符号 "->" 用于访问结构体指针或联合体指针所指向的成员。它是一种简便的方式来访问通过指针引用的结构体或联合体的成员。通过箭头符号,可以直接使用指针来访问结构体或联合体中的成员,而不需要通过间接引用运算符 "*" 来获取指针所指向的对象。举个例子,如果有一个结构体指针 "ptr",并且结构体中有一个成员变量 "data",可以使用 "->" 来访问该成员变量,如 "ptr->data"。
什么是堆栈,用C语言举个例子
堆栈(stack)是一种数据结构,它的特点是先进后出(Last In First Out,LIFO)。堆栈通常具有 push(入栈) 和 pop(出栈) 两个基本操作。
下面是一个用C语言实现堆栈的例子:
```c
#include <stdio.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int top;
} Stack;
void init(Stack *s) {
s->top = -1;
}
bool isEmpty(Stack *s) {
return s->top == -1;
}
bool isFull(Stack *s) {
return s->top == MAXSIZE - 1;
}
void push(Stack *s, int value) {
if (isFull(s)) {
printf("Stack is full!\n");
return;
}
s->top++;
s->data[s->top] = value;
}
int pop(Stack *s) {
if (isEmpty(s)) {
printf("Stack is empty!\n");
return -1;
}
int value = s->data[s->top];
s->top--;
return value;
}
int main() {
Stack s;
init(&s);
push(&s, 1);
push(&s, 2);
push(&s, 3);
while (!isEmpty(&s)) {
printf("%d ", pop(&s));
}
printf("\n");
return 0;
}
```
在这个例子中,我们使用结构体来定义一个堆栈,其中 `data` 数组用来存储堆栈中的元素,`top` 表示当前栈顶的位置。我们通过 `init` 函数来初始化堆栈,`isEmpty` 和 `isFull` 函数分别用来判断堆栈是否为空和是否已满,`push` 和 `pop` 函数用来入栈和出栈。在 `main` 函数中,我们创建一个堆栈对象并进行了一些入栈和出栈操作,并最终打印出堆栈中的元素。