【C语言】测试

本文探讨了C++中的数组与字符串的内存占用,包括普通数组、字符数组和多维数组的sizeof运算结果。同时,展示了二维字符数组的初始化限制。还涉及了条件运算符的短路特性以及指针类型转换在不同平台(32位和64位)下的行为。此外,通过构造函数测试解释了类对象的初始化,并解析了一个复杂的函数指针类型。最后,枚举类型的用法也在示例中得到展示。
摘要由CSDN通过智能技术生成

1、数组

int main()
{
	char a[] = "Metax";
	char* b = "Metax";
	char* c[] = { "Metax", "Tech" };
	char d[5] = { 'M', 'e', 't', 'a', 'x' };
	printf("%d, %d, %d, %d\n", sizeof(a), sizeof(b), sizeof(c), sizeof(d));
	return 0;
}

在这里插入图片描述
 

2、三维数组

int main()
{
	int a[2][3][4] = { { { 1, 2, 3 }, { 4, 5, 6 } }, { { 7, 8, 9 }, { 10, 11, 12 } } };
	int* ptr = (int*)(&a + 1);
	std::cout << *(int*)(a + 1) << endl;
	std::cout << *(ptr - 1) << endl;
	return 0;
}

在这里插入图片描述
 

3、二维字符数组初始化

int main()
{
	// 其余三种都无效
	//char str[2][3] = { { 'a', 'b' }, { 'c', 'd' }, { 'e', 'f' } };
	char str[2][3] = { "a", "b" };
	//char str1[2] = { "a", "b" };
	//char*str = { "a", "b" };
	return 0;
}

 

4、运算符实操

int main()
{
	int a = 5, b = 6, c = 7, d = 8;
	int m = 2, n = 2;
	cout << ((m = a > b) && (n = c > d)) << endl; // 因为&&前面不成立,所以不会走后面的
	cout << n << endl;
	return 0;
}

在这里插入图片描述
 

5、unsigned char* 和 unsigned long*

int main()
{
	unsigned char* p1 = (unsigned char*)0x801000;
	unsigned long* p2 = (unsigned long*)0x810000;
	p1 = p1 + 5;
	p2 = p2 + 5;
	return 0;
}

vs2013在32位
在这里插入图片描述

vs2013在64位
在这里插入图片描述
 

6、构造测试

class A
{
public:
	A(int a = 0)
	: _a(a)
	{
		cout << "构造" << endl;
	}
private:
	int _a;
};

int main()
{
	A a(2);
	A b[3];
	A*p[4]; // p:未引用的局部变量
	return 0;
}

在这里插入图片描述
 

7、复杂函数看法

void* (*func[4])(int(*)(int*, int*), char const*);

这是一个函数指针数组,返回值为void*

第一个参数是函数指针,返回值为int,两个参数都是int*

第二个参数是 char const*

 

8、枚举测试

enum T1
{
	red,
	black,
	blue = 6,
	bubu,
	yellow = 10
};

int main()
{
    cout << red << " " << black << " " << blue << " " << bubu << " " << yellow << endl;
    return 0;
}

在这里插入图片描述
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值