const a[5]={1,2,3,4,5};

数组变量已经是const 的指针了,

这里的const表示数组的元素是const int;

所以必须初始化;

 

 

对于:

  1. int a[] = {5, 15, 34, 54, 14, 2, 52, 72};
  2. int *p = &a[5];

则:

p[-2]的值是?

 

  • A.

    编译出错,因为数组下标越界了

  • B.

    运行出错,因为数组下标越界了

  • C.

    54

  • D.

    2

正确答案:C你错选为B
不会出错
 

/**函数名: strstr
功 能: 在串中查找指定字符串的第一次出现
用 法: char *strstr(char *str1, char *str2);
程序例:
*/

#include <stdio.h>
#include <string.h>

int main()
{
char *str1 = "Borland International";
char *str2 = "nation";
char *ptr;

ptr = strstr(str1, str2);
printf("The substring is: %s\n", ptr);
return 0;
}

 

/*头文件:#include <string.h>

strchr() 用来查找某字符在字符串中首次出现的位置,其原型为:
char * strchr (const char *str, int c);

【参数】str 为要查找的字符串,c 为要查找的字符。

strchr() 将会找出 str 字符串中第一次出现的字符 c 的地址,然后将该地址返回。

注意:字符串 str 的结束标志 NUL 也会被纳入检索范围,所以 str 的组后一个字符也可以被定位。

【返回值】如果找到指定的字符则返回该字符所在地址,否则返回 NULL。

返回的地址是字符串在内存中随机分配的地址再加上你所搜索的字符在字符串位置。设字符在字符串中首次出现的位置为 i,那么返回的地址可以理解为 str + i。

提示:如果希望查找某字符在字符串中最后一次出现的位置,可以使用 strrchr() 函数。

【实例】查找字符5首次出现的位置。
纯文本复制
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *s = "0123456789012345678901234567890";
char *p;
p = strchr(s, '5');
printf("%ld\n", s);
printf("%ld\n", p);
system("pause");
return 0;
}

 

strrchr()函数:
strrchr()函数的作用是:
    查找一个字符串在另一个字符串中 末次 出现的位置,并返回从字符串中的这个位置起,一直到字符串结束的所有字符;
    如果未能找到指定字符,那么函数将返回False。

char *strrchr(
   char *str,
   int c 
);
strrchr() 函数的分析 
函数原型:extern char * strrchr (const char *s, int c)

参数说明:s为一个字符串的指针,c为一个待查找字符。
        
所在库名:#include <string.h>
  
函数功能:查找在s字符串中最后一次出现字符c的位置。
  
返回说明:如果str中存在字符ch,返回出现ch的位置的指针;否则返回NULL。

说明:
str 
必要参数。指定需要进行搜索的字符串(字符串指针)

必要参数。指定需要查找的字符对象。如果是一个数字,那么他将搜索与这个数字对应的ASCII值相匹配的字符


strrchr()函数源码:
/* 查找在s字符串中最后一次出现字符c的位置 */
char * strrchr (const char *s, int c)
{
    register const char *found, *p;

    c = (unsigned char) c;

    //如果查找的字符是结束符,直接用strchr 函数返回结束符号的位置。

    if (c == '/0')
        return strchr (s, '/0');


    //返回值(查找的字符地址)赋初值,很重要。
    found = NULL;

    //从当前字符串超找字符c,并将返回指针赋给p,如果p不等于NULL,则执行循环。

    //如果p等于NULL,说明已查找整个字符串,退出循环。
    while ( (p = strchr (s, c)) != NULL )
    {

        //暂存查找到的字符地址。
        found = p;

        //截取已经查找过的字符串(将返回地址p的下一个字符地址作为字符串开头)。
        s = p + 1;
    }

    //如果没有找到字符,则不会执行循环,found返回初值NULL。

    //如果找到字符,返回p赋给found的指针地址。

    return (char *) found;
}

函数举例:
#include <string.h>
#include <stdio.h>

void main()
{
    char * pCh = "www.inkcool.com";
    char * pFind = strrchr(pCh, '.');
    if ( pFind != NULL)
    {
        printf("%s/n", pFind);    //可以直接printf(pFind);printf("/n");左边的表达式是合二为一的表达方法;
    }
}

返回结果是:.com      //注意,有'.'而不是只返回com