【C语言笔记】数组名 与 结构体变量名 的区别...

本文通过实例代码探讨了C语言中数组名和结构体变量的特性,包括数组名代表数组首元素地址,结构体变量名表示整个结构体,以及对结构体地址的解引用操作。实验结果显示,结构体变量的地址解引用并不直接获取第一个成员的值,而数组名直接使用即为数组首元素的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结论:

  1. 数组名 = 【数组的第一个元素】 的地址;
  2. 结构体变量名 代表的是整个结构体变量本身;
  3. 结构体变量名 取地址,却是 结构体变量中 第一个成员的地址;
  4. 对【3】的地址进行取值操作,并不会得到 第一个成员 的数据;

验证:

//编译环境:Window7 64位 
//编译软件:DEV C++ 

#include <stdio.h>

int Tab[3] = {1,2,3};

typedef struct None
{
	int a;
	char b;
	float c;
}none;

int main(void)
{
	none Num = {65535, 'z', 3.14};
	
	printf("Num = %d\n",Num);
	printf("结构体变量名 表示的是 整个结构体本身 \n");
	 
	printf("\n");
	printf("&Num   = 0x%x\n",&Num);	
	printf("&Num.a = 0x%x\n",&Num.a);
	printf("结构体变量名取地址 表示的是 第一个元素的地址 \n"); 
	
	printf("\n");
	printf("*(&Num)   = %d\n",*(&Num));	
	printf("*(&Num.a) = %d\n",*(&Num.a));
	printf("Num.a     = %d\n",Num.a);
	printf("结构体变量名取地址后,进行取值操作并不是第一个成员 \n"); 
	
	printf("\n");
	printf("Num.a = %d\n",Num.a);
	printf("Num.b = %c\n",Num.b);
	printf("Num.c = %.2f\n",Num.c);
	
	printf("\n");
	printf("Tab    = %d\n",*Tab);
	printf("Tab[0] = %d\n",Tab[0]);
	printf("数组名表示的是第一个元素的地址  \n");
	
	return 0;
} 

编译结果:

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值