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

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

菜。

 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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值