用指针实现数组长度的改变
- 在一些问题中,我们常常要对数组的长度和元素进行改变,例如在比较两个实数A与B的值是否相等。当A与B的值都非常大的时候,仅仅使用关系运算符来比较是无法完成的。这时候,我们就要将A与B用字符数组的形式进行存储。
- 我们可以定义
char num1[100000],num2[100000]
来分别存储A与B的值。在使用strcmp(num1,num2)
来进行比较。但有时候A与B的值并不一定是标准的实数,例如A=00012345.00 B=+12345
,这时候就需要去掉字符串里面多余的'+' , '0' , '.'
。 - 对于处于字符串末位的
‘0’与 '.'
,我们只需要将其变成字符串结束标志'\0'
即可。但对于字符串前面的'+' 与 '0'
就相对难以处理。我们可以用字符串后面的元素来将其覆盖。例如假设num1="+0000345"
,我们可以用for(i=0;i<8;i++) num1[i]=num[i+5]
来进行处理。但是如果字符串num1
的长度非常大,这样处理会导致程序运行时间过长,所以我们就要用到指针。 - 定义
char *p=num1
,我们知道当指针变量指向数组或字符串的时候,其表示此数组或字符串的首地址,即p=&num1[0]
,所以我们可以改变指针变量p
,的值,使其指向字符串的第一个非0元素,即p=&num1[5]
,然后用指针p
代替字符串num1
,以此实现字符数组的长度的改变。
来源:CSDN
作者:XIAOYUELIN_
链接:https://blog.csdn.net/XIAOYUELIN_/article/details/103463601