Summer 15

本文深入探讨了C语言编程中的几个关键概念和技术,包括字符数组的动态修改、字符串操作、位运算显示及八进制数值处理。通过具体代码示例,讲解了如何使用指针进行字符串替换、位操作和数值转换,以及不同数据类型在内存中的表现。

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

1.以下程序运行结果是 !2!4!6!8!

int main()
{
	char a[] = "123456789", *p = a;
	int i = 0;
	while (*p)
	{
		if (i % 2 == 0)
			*p = '!';
		i++; p++;
	}
	puts(a);//!2!4!6!8!
	system("pause");
	return 0;
}

2.程序运行结果是 Afgd

​
int main()
{
	char str[] = "ABCDEFG";
	char *p1, *p2;
	p1 = "abcd";//p1指针指向字符串abcd的首地址
	p2 = "efgh";//p2指针指向字符串efgh首地址
	strcpy(str + 1, p2 + 1); //指针移一位所指的字符串fgh 复制到 str[1]这个位置(从这个位置开始往后覆盖) 即Afgh
	strcpy(str + 3, p1 + 3);//指针移三位所指的字符串d 复制到str[3]这个位置 即Afgd
	printf("%s\n", str);//Afgd
	system("pause");
	return 0;
}

​

3.如下代码输出结果是 000000f7,fffffff7

int main()
{
	unsigned int a = 0xFFFFFFF7;
	unsigned char i = (unsigned char)a;
	char *b = (char *)&a;
	printf("%08x,%08x", i, *b);//000000f7,fffffff7
	//%08x 8位对齐的16进制格式
	system("pause");
	return 0;
}

char* b = (char*)&a;  等价于:unsigned int* p = &a; // p中的内容是的地址,即p指向a
char* b = (char*)p; // 此处的强制转换只是使b也指向a而已 ,这里是char类型的指针转换,而不是char类型的转换,影响的只是指针的寻址

4.下面程序输出结果为 10

int main()
{
	int x = 1, y = 012;
	printf("%d\n", y*x++);//10
	system("pause");
	return 0;
}

数字前面加 0,表示的八进制数。例如:012 表示的是八进制,由于 2 的 3 次方等于 8,因此八进制和二进制之间的转换关系就是:从右往左,每三位一组,就是二进制。因此,八进制的 012 转换成二进制数就是:1010(即:000 001 010 )。

举个例子,十进制780等于7*10^2 + 7*10^1 + 7*10^0
同理,八进制的012等于0*8^2 + 1*8^1 + 2*8^0 = 8 + 2 = 10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值