C语言中什么时候用“->”

使用说明

"->"是C语言中的一个运算符,它用于访问结构体或者联合体中的成员,其左边是一个指向结构体或者联合体的指针,右边是需要访问的成员名。

举例说明

定义结构体

c 复制代码
# include <stdio.h>
# include <stdlib.h>
//#include <string.h>
//# include <string.h>
//*** 5 ***
struct student //类型
{ //类型内容
	char name[20];
	int age;

};
typedef struct {
	char name[20];
	int age;
}student2;

int main() {
	// 相当于int    相当于 a = 8;
	/* 	
	* int * arr;
	* arr是地址
	* *arr是值
	*/
	struct student stu1;  //stu1是结构体名字
	struct student stu2;
	struct student *stu3; //stu3是结构体地址  *stu3才是结构体的值
	struct student *stu4;

	student2 stu5;

	// 结构体变量 静态 分配内存
	stu3 = &stu1; // 等价,地址要用地址来赋值,"地址=地址"
	// 动态内存分配
	stu4 = (struct student*)malloc(sizeof(struct student));//分配内存 allocation memory
	// 直接赋值
	char* strcpy(char* dest, const char* src);

	strcpy(stu1.name, "zhangsan"); // 字符串复制
	//printf("stu1.name = %s\n", stu1.name);// 字符串本身内容
	//printf("stu1.name = %d\n", stu1.name);// 字符数组的首地址
	stu1.age = 18;
	stu5.age = stu1.age + 2;
	printf("stu5 age is %d\n\n", stu5.age);
	//printf("stu1.age = %d\n", stu1.age);
	printf("stu3's age is %d\n\n", stu3->age); // pointer structure variable   结构变量
	printf("stu3's name is %s\n", stu3->name);// 用箭头访问name的地址
	// memcpy
	void* memcpy(void* dest, const void* src, size_t n);

	memcpy(&stu2, &stu1, sizeof(struct student));
	printf("stu2.name = %s\n", stu2.name);
	printf("stu2.age = %d\n\n", stu2.age);
	memcpy(stu4, &stu1, sizeof(struct student)); // stu4 结构体指针不用&取地址符
	printf("stu4.name = %s\n", stu2.name);
	printf("stu4.age = %d\n\n", stu2.age); 

	printf("stu4 ->name %s\n", stu4->name); //   %s 输出字符串
	printf("stu4 ->age %d\n", stu4->age); // %d 输出整数类型
	return 0;
}

其中

c 复制代码
	printf("stu4 ->name %s\n", stu4->name); //   %s 输出字符串
	printf("stu4 ->age %d\n", stu4->age); // %d 输出整数类型

以及

c 复制代码
    printf("stu3's age is %d\n\n", stu3->age); // pointer structure variable   
    // 结构变量
	printf("stu3's name is %s\n", stu3->name);// 用箭头访问name的地址

用到取指针中的值

相关推荐
玄同765几秒前
Python 自动发送邮件实战:用 QQ/163 邮箱发送大模型生成的内容
开发语言·人工智能·python·深度学习·机器学习·邮件·邮箱
索荣荣2 分钟前
Maven配置文件(pom.xml)终极指南
java·开发语言
钟智强5 分钟前
React2Shell:CVE-2025-66478 Next.js 远程执行漏洞深度分析与代码剖析
开发语言·javascript·ecmascript
数研小生5 分钟前
Python自然语言处理:NLTK与Gensim库
开发语言·python·自然语言处理
第七序章7 分钟前
【Linux学习笔记】初识Linux —— 理解gcc编译器
linux·运维·服务器·开发语言·人工智能·笔记·学习
消失的旧时光-194318 分钟前
C++ 拷贝构造、拷贝赋值、移动构造、移动赋值 —— 四大对象语义完全梳理
开发语言·c++
送秋三十五20 分钟前
一次大文件处理性能优化实录————Java 优化过程
java·开发语言·性能优化
lcj251130 分钟前
深入理解指针(4):qsort 函数 & 通过冒泡排序实现
c语言·数据结构·算法
Sylvia-girl31 分钟前
线程池~~
java·开发语言
fie888932 分钟前
基于MATLAB的转子动力学建模与仿真实现(含碰摩、不平衡激励)
开发语言·算法·matlab