前言

赋予指针地址的时候要类型匹配。

  • For instance
    "name"char*类型
    内容

  • 让两个指针指向同一个字符串
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
int main()
{
char* name = "faye"; //让name(指针)指向字符串,即name就是这个字符串的地址
printf("%s\n", name);

char * str; //重新定义一个指针
str = name; //让str(地址)被赋予name(地址)so,str也指向这个字符串
printf("%s\n", str); //这时name和str的地址一样
str = "hello"; //改变了指向的字符串内容
printf("%s\n", str);

return 0;
}

一个间接的

  • 给指针的指针赋值,让两个指针指向同一个字符串
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
int main()
{
char* name = "faye";
printf("%s\n", name);
char** str; //char**也是一个类型,定义了指针的指针
str = &name; //我让字符串地址的地址赋给了str(也就是name的地址)

//重点啊,地址的地址是一一对应的,也就是地址上的值还是地址
//自然而然

*str = "ferry"; //让*str指向“ferry”,改掉
printf("%s\n", *str); //ferry
printf("%s\n", name); //ferry
//发现原来地址上的值被改掉

return 0;

  • 字符串类型的地址
1
2
3
4
5
6
char* origin = "origin";     //开辟空间

for(int i = 0; i < 3; i++)
printf("%s\n", origin + i);

// *origin *(origin + 1) *(origin + 2)是"origin" "rigin" "igin"