指针变量(C语言)

分手后的思念是犯贱 2023-07-13 04:20 139阅读 0赞

1.首先要明白,变量储存常量,(变量之所以叫变量就是因为其中储存的常量是可以变化得),如:

  1. int a; a=10;

其中a为变量,10为常量,a储存了10

而指针变量,也储存常量(即其它变量的地址,也叫作指针)

2.为将指针变量和普通变量区分,加了‘ * ’,例如:

  1. char* p;
  2. p=&a;

其中,
①char为指针变量的基地址,此处a变量类型只能是char
②星号只是类型的一部分,p才是变量名。因此,a的地址&a是赋给p而不是p
③一般写char
,将星号紧紧接在char后面
④或者也可以写为 char* p=&a;
⑤多个变量
如果 char*p1,p2; 则只定义了p1为指针变量,p2为普通的char变量
而当 char *p1,*p2; 则p1、p2都为指针变量
同时赋值也行 char *p1=&a,*p2=&b;
⑥可以用“钥匙”——‘ * ’,来提取指针变量所指向变量的值

  1. a=233
  2. printf("%c",*p);
  3. printf("%d",p);

输出结果为

  1. 233
  2. 6487623

⑦支持指针变量进行加减运算
两指针变量相减的结果为 两个指针所指向的元素的地址的偏移距离

  1. printf(“%d\n”,p);
  2. printf("%d\n",++p);
  3. printf("%d\n",p+1);

输出结果为

  1. 6487623
  2. 6487624
  3. 6487625

“+1”是a下一个元素的地址,故跨越了1Byte;
如果为int a;int*p=&a; 则输出结果会变为会为

  1. 6487620
  2. 6487624
  3. 6487628

因为此时a的下一个元素的地址,跨越了int型的4Byte

发表评论

表情:
评论列表 (有 0 条评论,139人围观)

还没有评论,来说两句吧...

相关阅读