前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >怎么确定一个变量的类型

怎么确定一个变量的类型

作者头像
用户5166556
发布2019-04-16 14:28:24
4500
发布2019-04-16 14:28:24
举报

例如 int * p[10] 怎么确定这个变量的类型呢,众所周知,利用sizeof一个变量,和一个变量的类型得到的值应该是相同的。

如下:

代码语言:javascript
复制
#include <stdio.h>

int main(void)
{
	int * p[10];
	printf("%ld %ld\n", sizeof(p),sizeof(int * [10]));
	//我这里打印出来40(32位系统)告诉我们这应该是一个数组类型
	return 1;
}

由此函数可以看出打印出来的数据是相同的, int * p[10]  * 和p[10]他们2个类型是一样的(p[10]就相当于*(p+10))所以他们的优先级是一样的 优先级一样的情况下,按照右结合性来计算,所以这里p离方括号最近,所以这是一个数组他有10个元素 可以看成int * A对它取每个元素,那么每个元素就是一个指针(相当于一个相同元素的集合,所以可以看成一个数组) 所以这里 p[0] p[1] p[2]....都是一个指针

代码语言:javascript
复制
#include <stdio.h>


int main(void)
{
	int * p[10];
	int a = 0;
	int b;
	int c;
	//这里的p[0]就是a的地址,取*之后就是a的值
	p[0] = &a;
	*p[0] = 2;
	printf("%ld %ld\n", sizeof(p),sizeof(int * [10]));
	printf("%d\n",a);


	return 1;
}

例如int (*p)[10]

代码语言:javascript
复制
#include <stdio.h>

int main(void)
{
	int (*p)[10];
	printf("%ld %ld\n",sizeof(p),sizeof(int (*)[10]));//打印出来4,4告诉我们这应该是一个指针类型
	printf("%ld %ld\n",sizeof(*p),sizeof(int [10]));//代表*p是一个指针,指向一个数组类型的指针,指向10整形类型的数组
		int a[10]={1};
	int b[10]={1};
	p = &a;
	//指向整个数组

	int * q = b;
	//指向首元素的指针

	printf("%p\n", a);
	printf("%p\n", &a);
	return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年02月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档