一、字符串
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);