sizeof vs. strlen enum

本文通过一个C语言程序示例介绍了枚举类型的使用方法及其在状态判断中的应用,并展示了如何获取数组长度及字符串的操作,包括计算字符串长度与字符指针的大小。
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

enum node_states {
	NODE_STATE_UNKNOWN,	/* node's initial state, unknown */
	NODE_STATE_DOWN,	/* node in non-usable state */
	NODE_STATE_IDLE,	/* node idle and available for use */
	NODE_STATE_ALLOCATED,	/* node has been allocated to a job */
	NODE_STATE_ERROR,	/* node is in an error state */
	NODE_STATE_MIXED,	/* node has a mixed state */
	NODE_STATE_FUTURE,	/* node slot reserved for future use */
	NODE_STATE_END		/* last entry in table */
};

void enum_test(){
	uint16_t getValue = 2;
	switch(getValue){
	case NODE_STATE_UNKNOWN:
		puts("NODE_STATE_UNKNOWN");
		break;
	case NODE_STATE_DOWN:
		puts("NODE_STATE_DOWN");
		break;
	case NODE_STATE_IDLE:
		puts("NODE_STATE_IDLE");
		break;
	default:
		puts("I'm tired...");
		break;
	}
}

void print_sizeof_strlen(){
	int array[] = {4, 5, 3, 1, 2};
	printf("number of int: %d\n", sizeof(array)/sizeof(int));

	struct student{
		int age;
		char name[20];
	}stu_array[5];
	printf("number of student:%d\n", sizeof(stu_array)/sizeof(struct student));

	char str[20]= "0123456789"; //strlen's function, its result is runtime value
	printf("strlen(str) = %d, sizeof(str) = %d\n", strlen(str), sizeof(str));//10, 20

	char *str2 = "0123456789";
//	sizeof(str2), sizeof(char*) is the str2's length, it's 8 bytes
	printf("str2 = %d\n", str2);
	printf("sizeof(str2) = %d, sizeof(char*) = %d\n", sizeof(str2), sizeof(char*));
	printf("sizeof(*str2) = %d\n", sizeof(*str2));  //1 
	printf("strlen(str2) = %d\n", strlen(str2));
}

int main(void) {
	enum_test();
	print_sizeof_strlen();
	return EXIT_SUCCESS;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值