专栏首页让技术和时代并行怎么确定一个变量的类型

怎么确定一个变量的类型

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

如下:

#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]....都是一个指针

#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]

#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;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • K8S集群模式下fluent-bit日志收集方案设计和实践

    「随着 K8s 不断更新迭代,使用 K8s 日志系统建设的开发者,逐渐遇到了各种复杂的问题和挑战。本篇文章中结合作者使用经验,分析和设计 K8s 日志收集实践过...

    用户5166556
  • C语言中十进制以二进制形式输出

    在C语言中我们通常有这样一种说法, 不管怎么写就看我们怎么读。 例如打印出一个整形的各种形式就有 printf("%o...

    用户5166556
  • C中值传递与地址传递

    用户5166556
  • 《IT男1-10分打分标准》出炉,你是哪类IT男?

    《IT男1-10分打分标准》出炉,10分男简直是神话级别,快来看看自己属于哪个等级吧!!

    java进阶架构师
  • CV学习笔记(二十二):卡号格式化匹配

    在后续完成了银行卡的识别之后,现在可以进行卡号核验和格式化的工作了,这些工作虽然没有之前的那么复杂,但是还是比较繁琐的。

    云时之间
  • c语言基础学习07_指针

    =============================================================================

    黑泽君
  • vue-leaflet如何设置地图的Leaflet Controls样式,更改地图的缩放控件、右下角状态控件的显示隐藏

    详细参考leaflet官网:https://leafletjs.com/reference-1.3.4.html#map-option

    acoolgiser
  • 迈向 serverless 开发的第一步[每日前端夜话0xEE]

    在本文的第一部分中,我们将讨论设置适合 Knative 0.6.0 版的开发环境。第二部分介绍第一个 serverless 微服务的部署。使用 Knative ...

    疯狂的技术宅
  • 用上索引就一定比全表扫描快?

    在外 5 分钟,全身都能湿透的季节终于还是到来了。作为行政的小C,原本在空调下吹着风,贴着各处提交来的发票,倒也不算太糟糕。

    Lenis
  • 技术 | Python从零开始系列连载(二十五)

    为了解答大家学习Python时遇到各种常见问题,小灯塔特地整理了一系列从零开始的入门到熟练的系列连载,每周五准时推出,欢迎大家学积极学习转载~

    灯塔大数据

扫码关注云+社区

领取腾讯云代金券