bug:尝试修改指针指向的地址内的值,segment default

博客指出不能直接对数组元素一个个修改,应通过修改数组的指向来修改数组的值,涉及到一定的编程操作要点。

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

菜。

 segment default,

#include <iostream>

#include <string.h>

using namespace std;
int main()
{
char* aa="hell world!";
int len=strlen(aa);
cout<<len<<endl;

int i=0;
while(len--)
{


	cout<<aa[i++];
	aa[i-1]='o';
}	

int len1=strlen(aa);
int j=0;
while(len1--)
	cout<<aa[j++];
}

 

 

原因:

不能直接对aa[i] 一个个的修改,

通过修改aa的指向来修改aa的值。

#include <iostream>

#include <string.h>

using namespace std;
int main()
{
	char* aa="hell world!";
	int len=strlen(aa);
	cout<<len<<endl;

	char bb[len]={0};

	int i=0;
	while(len--)
	{


		bb[i]='t';
		cout<<aa[i++];
	}	

	cout<<endl;
	aa=bb;

	int len1=strlen(aa);
	int j=0;
	while(len1--)
		cout<<aa[j++];

	cout<<endl;
	char* cc="666 , 6666!";
	aa = cc;
	for(int i=0;i<strlen(cc);i++)
	{
		cout<<aa[i];
	}
	cout<<endl;
	return 0;
}

 

 

#include<reg52.h> #include "Delay.h" sbit SEL0=P2^0; sbit SEL1=P2^1; sbit SEL2=P2^2; sbit SEL3=P2^3; void Segdisp(unsigned int channel,unsigned char cur_ti[][10]) { unsigned char segment_0[] = {0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}; //{0,1,2,3,4,5,6,7,8,9} unsigned char segment_1[] = {0x03,0x9e,0x24,0x0c,0x98,0x48,0x40,0x1e,0x00,0x08}; //带小数点 if(channel == 0) { switch(cur_ti[6][0]) { case '2': {P0=segment_0[2];SEL3 = 0;Delay_ms(5);SEL3 = 1;break;} case '1': {P0=segment_0[1];SEL3 = 0;Delay_ms(5);SEL3 = 1;break;} case '0': {P0=segment_0[0];SEL3 = 0;Delay_ms(5);SEL3 = 1;break;} } switch(cur_ti[6][1]) { case '9': {P0=segment_1[9];SEL2 = 0;Delay_ms(5);SEL2 = 1;break;} case '8': {P0=segment_1[8];SEL2 = 0;Delay_ms(5);SEL2 = 1;break;} case '7': {P0=segment_1[7];SEL2 = 0;Delay_ms(5);SEL2 = 1;break;} case '6': {P0=segment_1[6];SEL2 = 0;Delay_ms(5);SEL2 = 1;break;} case '5': {P0=segment_1[5];SEL2 = 0;Delay_ms(5);SEL2 = 1;break;} case '4': {P0=segment_1[4];SEL2 = 0;Delay_ms(5);SEL2 = 1;break;} case '3': {P0=segment_1[3];SEL2 = 0;Delay_ms(5);SEL2 = 1;break;} case '2': {P0=segment_1[2];SEL2 = 0;Delay_ms(5);SEL2 = 1;break;} case '1': {P0=segment_1[1];SEL2 = 0;Delay_ms(5);SEL2 = 1;break;} case '0': {P0=segment_1[0];SEL2 = 0;Delay_ms(5);SEL2 = 1;break;} } switch(cur_ti[8][0]) { case '5': {P0=segment_0[5];SEL1 = 0;Delay_ms(5);SEL1 = 1;break;} case '4': {P0=segment_0[4];SEL1 = 0;Delay_ms(5);SEL1 = 1;break;} case '3': {P0=segment_0[3];SEL1 = 0;Delay_ms(5);SEL1 = 1;break;} case '2': {P0=segment_0[2];SEL1 = 0;Delay_ms(5);SEL1 = 1;break;} case '1': {P0=segment_0[1];SEL1 = 0;Delay_ms(5);SEL1 = 1;break;} case '0': {P0=segment_0[0];SEL1 = 0;Delay_ms(5);SEL1 = 1;break;} } switch(cur_ti[8][1]) { case '9': {P0=segment_0[9];SEL0 = 0;Delay_ms(5);SEL0 = 1;break;} case '8': {P0=segment_0[8];SEL0 = 0;Delay_ms(5);SEL0 = 1;break;} case '7': {P0=segment_0[7];SEL0 = 0;Delay_ms(5);SEL0 = 1;break;} case '6': {P0=segment_0[6];SEL0 = 0;Delay_ms(5);SEL0 = 1;break;} case '5': {P0=segment_0[5];SEL0 = 0;Delay_ms(5);SEL0 = 1;break;} case '4': {P0=segment_0[4];SEL0 = 0;Delay_ms(5);SEL0 = 1;break;} case '3': {P0=segment_0[3];SEL0 = 0;Delay_ms(5);SEL0 = 1;break;} case '2': {P0=segment_0[2];SEL0 = 0;Delay_ms(5);SEL0 = 1;break;} case '1': {P0=segment_0[1];SEL0 = 0;Delay_ms(5);SEL0 = 1;break;} case '0': {P0=segment_0[0];SEL0 = 0;Delay_ms(5);SEL0 = 1;break;} } } if(channel == 1) { switch(cur_ti[2][0]) { case '1': {P0=segment_1[1];SEL3 = 0;Delay_ms(5);SEL3 = 1;break;} case '0': {P0=segment_1[0];SEL3 = 0;Delay_ms(5);SEL3 = 1;break;} } switch(cur_ti[2][1]) { case '9': {P0=segment_1[9];SEL2 = 0;Delay_ms(5);SEL2 = 1;break;} case '8': {P0=segment_1[8];SEL2 = 0;Delay_ms(5);SEL2 = 1;break;} case '7': {P0=segment_1[7];SEL2 = 0;Delay_ms(5);SEL2 = 1;break;} case '6': {P0=segment_1[6];SEL2 = 0;Delay_ms(5);SEL2 = 1;break;} case '5': {P0=segment_1[5];SEL2 = 0;Delay_ms(5);SEL2 = 1;break;} case '4': {P0=segment_1[4];SEL2 = 0;Delay_ms(5);SEL2 = 1;break;} case '3': {P0=segment_1[3];SEL2 = 0;Delay_ms(5);SEL2 = 1;break;} case '2': {P0=segment_1[2];SEL2 = 0;Delay_ms(5);SEL2 = 1;break;} case '1': {P0=segment_1[1];SEL2 = 0;Delay_ms(5);SEL2 = 1;break;} case '0': {P0=segment_1[0];SEL2 = 0;Delay_ms(5);SEL2 = 1;break;} } switch(cur_ti[4][0]) { case '3': {P0=segment_0[3];SEL1 = 0;Delay_ms(5);SEL1 = 1;break;} case '2': {P0=segment_0[2];SEL1 = 0;Delay_ms(5);SEL1 = 1;break;} case '1': {P0=segment_0[1];SEL1 = 0;Delay_ms(5);SEL1 = 1;break;} case '0': {P0=segment_0[0];SEL1 = 0;Delay_ms(5);SEL1 = 1;break;} } switch(cur_ti[4][1]) { case '9': {P0=segment_0[9];SEL0 = 0;Delay_ms(5);SEL0 = 1;break;} case '8': {P0=segment_0[8];SEL0 = 0;Delay_ms(5);SEL0 = 1;break;} case '7': {P0=segment_0[7];SEL0 = 0;Delay_ms(5);SEL0 = 1;break;} case '6': {P0=segment_0[6];SEL0 = 0;Delay_ms(5);SEL0 = 1;break;} case '5': {P0=segment_0[5];SEL0 = 0;Delay_ms(5);SEL0 = 1;break;} case '4': {P0=segment_0[4];SEL0 = 0;Delay_ms(5);SEL0 = 1;break;} case '3': {P0=segment_0[3];SEL0 = 0;Delay_ms(5);SEL0 = 1;break;} case '2': {P0=segment_0[2];SEL0 = 0;Delay_ms(5);SEL0 = 1;break;} case '1': {P0=segment_0[1];SEL0 = 0;Delay_ms(5);SEL0 = 1;break;} } } }在不改变原代码变量名的情况下优化该代码
最新发布
07-09
Booting Linux on physical CPU 0x0 Linux version 4.14.0-xilinx (linux@linux-VirtualBox) (gcc version 7.3.1 20180314 (Linaro GCC 7.3-2018.04-rc3)) #1 SMP PREEMPT Mon May 26 16:16:52 CST 2025 CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache OF: fdt: Machine model: xlnx,zynq-7000 earlycon: cdns0 at MMIO 0xe0001000 (options '115200n8') bootconsole [cdns0] enabled Memory policy: Data cache writealloc cma: Reserved 16 MiB at 0x3f000000 Unable to handle kernel paging request at virtual address fe8ee000 pgd = c0004000 [fe8ee000] *pgd=00000000 Internal error: Oops - BUG: 5 [#1] PREEMPT SMP ARM Modules linked in: CPU: 0 PID: 0 Comm: swapper Not tainted 4.14.0-xilinx #1 Hardware name: Xilinx Zynq Platform task: c0a07000 task.stack: c0a00000 PC is at fdt_check_header+0x0/0x74 LR is at __unflatten_device_tree+0x28/0xfc pc : [<c063571c>] lr : [<c05007b0>] psr: a00000d3 sp : c0a01f48 ip : 00a61d43 fp : efffeec0 r10: c0a0fd80 r9 : c0a4c388 r8 : 00000000 r7 : fe8ee000 r6 : c0a57554 r5 : c091e388 r4 : c091e388 r3 : c091e388 r2 : c0a57554 r1 : 00000000 r0 : fe8ee000 Flags: NzCv IRQs off FIQs off Mode SVC_32 ISA ARM Segment none Control: 18c5387d Table: 0000404a DAC: 00000051 Process swapper (pid: 0, stack limit = 0xc0a00210) Stack: (0xc0a01f48 to 0xc0a02000) 1f40: c091e388 c0a0815c c0a3b9c0 c0a06d00 00000000 c091f160 1f60: 00000000 0000000c c092bd80 c0903dc8 ffffffff 18c5387d c0a03c40 c083e494 1f80: 413fc090 00000000 00000000 c015120c c07dcb45 c0a01fb4 00000001 c0a3bb14 1fa0: c0a3b880 ffffffff c0a03c40 0000406a 413fc090 00000000 00000000 c0900904 1fc0: 00000000 00000000 00000000 00000000 00000000 c0933a30 00000000 c0a3bb14 1fe0: c0a03c58 c0933a2c c0a08284 0000406a 413fc090 0000807c 00000000 00000000 [<c063571c>] (fdt_check_header) from [<c05007b0>] (__unflatten_device_tree+0x28/0xfc) [<c05007b0>] (__unflatten_device_tree) from [<c091f160>] (unflatten_device_tree+0x24/0x40) [<c091f160>] (unflatten_device_tree) from [<c0903dc8>] (setup_arch+0x5e0/0x9d8) [<c0903dc8>] (setup_arch) from [<c0900904>] (start_kernel+0x4c/0x364) [<c0900904>] (start_kernel) from [<0000807c>] (0x807c) Code: ebf2fa21 e28dd014 e49df004 c063560c (e5903000) random: get_random_bytes called from init_oops_id+0x20/0x3c with crng_init=0 ---[ end trace 0000000000000000 ]--- Kernel panic - not syncing: Attempted to kill the idle task! ---[ end Kernel panic - not syncing: Attempted to kill the idle task!
05-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值