用指针实现数组长度的改变
- 在一些问题中,我们常常要对数组的长度和元素进行改变,例如在比较两个实数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