黑马程序员--c语言:字符串、指针

来源:互联网 发布:月度数据分析报告模板 编辑:程序博客网 时间:2024/04/30 14:59

一、字符串

1.基本应用

char name[] = {'i', 't', 'c', 'H', 's', 't', '\0'};

char name[] = "itcast";

char name[8] = "it";

char name2[8] = {'i', 't', '\0'};

char name2[8] = {'i', 't', 0};

char name2[8] = {'i', 't'};

 

2. \0的作用

 2.1 字符串结束的标记

 2.2 printf("%s", name2); 

 2.3 会从name2这个地址开始输出字符,直到遇到\0为止

例:

char name[] = "itc\0ast";   

char name2[] = {'o', 'k'};  

printf("%s\n", &name2[1]);

 

3.strlen函数

3.1计算的是字符数,并不是字数。一个汉字算作3个字符

3.2计算的字符不包括\0

3.3从某个地址开始数字符的个数,直到遇到\0为止

3.4strlen函数声明在string.h文件中

例:

char name2[] = {'0', '\0', '6'};    

int size = strlen(name2);   

printf("%d\n", size);

 

4.字符串数组

char names[2][10]= {"jack", "rose"};

 

二、指针

1.格式

变量类型 *变量名;

  int *p;

 

2.初始化

int n =10;

int *p = &n;

int *p ;

p = &n; 

  

3.常见错误格式

3.1 错误一

int *p;

double d = 10.0;

p = &d;

    

3.2 错误二

int *p;

p = 200;

 

3.3 错误三

int *p;

printf("%d\n", *p);

    

3.4错误四 

int *p;

*p = &a;

 

4.指向指针的指针

int a = 10;   

int *p = &a;    

int **pp = &p;

 

三、指针与数组

 1.数组元素的访问方式

 int ages[5];

 int *p;

 p = ages;

 1> 数组名[下标]  ages[i]

 2> 指针变量名[下标] p[i]

 3> *(p + i)

 

 2.指针变量+1,地址值究竟加多少,取决于指针的类型

  int *   4

  char *  1

  double * 8

 

 

四、指针与字符串

1. 定义字符串的2种方式

1.1利用数组

 char name[] = "itcast";

  * 特点:字符串里面的字符是可以修改的

  * 使用场合:字符串的内容需要经常修改

 

 1.2利用指针

  char *name = "itcast";

  * 特点:字符串其实是一个常量字符串,里面的字符是不能修改

  * 使用场合:字符串的内容不需要修改,而且这个字符串经常使用

 

2. 指针数组(字符串数组)

    char *names[5] = {"jack", "rose", "jake"};

    

3. 二维字符数组(字符串数组)

    char names2[2][10] = {"jack", "rose"};

 

五、返回指针的函数

#include <stdio.h>

char *test();

int main()

{

    char *name = test();

    printf("name=%s\n", name);   

    return 0;

}

char *test()

{

    return "rose";

}

 

六、指向函数的指针

1.定义指向函数的指针

    double (*p)(double, char *, int);

    p = haha;

    或者

double (*p)(double, char *, int) = haha;

 

2.如何间接调用函数

2.1   p(10.7, "jack", 10);

2.2  (*p)(10.7, "jack", 10);

 

 

 

 

 

0 0