单片机交流
直播中

周棠亨

7年用户 1008经验值
擅长:可编程逻辑 电源/新能源
私信 关注
[问答]

关于c语言中数组下标的加减平移知识点总结不看肯定后悔

关于c语言中数组下标的加减平移知识点总结不看肯定后悔

回帖(1)

苏宇樵

2021-10-14 14:50:47
数组下标是从0开始编号的;
当前数组下标就是该元素之前元素的个数。
无论是从从0开始下标,还是从1开始下标,两下标之差是一样的,都表示b比a多了几个元素。
前言:
加法的理解:
a+2= b





表示b比a多2;
减法的理解:
b-2=a;
加减法是数量上多几个,少几个。加几就是多几个,也是指针向后挪动了几个;减几就是少几个,也是指针向前挪动了几个;
数组下标是从0开始的,即数组第一个元素是str[0];
从0开始下标,当前下标值即为前面元素的个数。
数组的长度是数组最后一个元素的下一位的下标length,----->表示之前有length个元素。
for(int i = 0;i
length是数组的长度
pos =0;
pos+=2;  //指向下标为2的元素;
pos+=2; //指向下标为4的元素;,数组之前有4个元素;
pos = 4;//数组之前有4个元素;
pos-=2; //指向下标为2的元素;
小结:
数组指针,从起始位置0 ,然后+N,表示指针向后挪动N个位置,数组指针指向了下标为N的元素。同时剩余数组长度就少了N个。
数组指针,从length位置-N,表示指针向前挪动N个位置,数组指针指向了下标为 length-N的元素,同时,剩余数组长度为length-N.
以如下示例  ,给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度分析数组下标:

int lengthOfLongestSubstring(char * s){
    int strLen = strlen(s);
    int maxLen = 1;
    int count ;
    char *str = s;
    int i,j;
    int k = 0;
    if(strLen == 0)//字符串为空串
    {
        return 0;
    }
    for(i=1;i     {
        count = 1;        //字符串每次比较,count重新计数
        for(j=0;j         {
            if(s==str[j])
            {
                str = str+j+1;//重复的话,str指向重复字符的下一个字符
                k = k+j+1;//k记录str共向后移动的字符数//向后移动的个数==去掉的字符个数              
                break;  //str成为一个新串,重新开始比较               
            }else
            {
                count++;        //不重复的情况时,计数值++               
            }
        }
        maxLen = maxLen>count?maxLen:count;//求最大字符长度//跳出for循环就意味着串比较结束
    }
    return maxLen;
   

}
for(j=0;j         {
            if(s==str[j])
            {
                str = str+j+1;//重复的话,str指向重复字符的下一个字符
                k = k+j+1;//k记录str共向后移动的字符数//向后移动的个数==去掉的字符个数              
                break;  //str成为一个新串,重新开始比较               
            }else
            {
                count++;        //不重复的情况时,计数值++               
            }
        }
上例中的 j
举报

更多回帖

×
20
完善资料,
赚取积分