C语言指针的一点总结

目录

一.指针

二. 指针运算符

三.指针变量的赋值

四. 指针变量地址改变

五.指针与数组


一.指针

重要的是区分指针变量,变量的地址,和地址中存放的数据。

指针:内存中位置的地址

指针变量:里面的数据内容是指向内存中某一位置的地址。

一般把指针与指针变量统称为指针。

指针变量的定义:

如:int *a;//表示a是一个整数型指针变量,里面的数据看成是一个地址。这个地址指向int类型变量的地址

如:char *c;//表示c是一个字符型指针变量,里面的数据看成是一个地址。这个地址指向char类型变量的地址

二. 指针运算符

取地址运算符&:如&x,表示x变量的地址。

指针运算符 *:或称为指向运算符,间接访问运算符(即通过指针来找到地址然后读取该地址下实际保存的内容)

注意区分int*a;只是说明这个变量a是个指针变量,然后给他一个地址;

而在用时如*a表示代表了这个指针指向地址下的内容。

即用 *a来表示其指向地址下的实际内容。而a是表示是地址。

三.指针变量的赋值

对变量值的改变归根到底是改变实际地址中保存的内容

int a = 23;
int *p = &a;//定义一个指针变量a,其指向地址是变量a的地址
printf("a的实际值= %d\n", a);//输出23
printf("指针变量p指向的值= %d\n", *p);//这里*p表示是指向变量a地址中的内容,即与a内容一样输出23。
*p = 89;//若改变该地址下的内容,判断a的值是否会变?
printf("a值会变吗?= %d\n", a);//输出89,因为该指向a地址中实际内容变了,故a的值变成89

四. 指针变量地址改变

若指针地址改变了。则其指向地址对应的内容也改变了

int a = 23;
int b = 34;
int *p = &a;
printf("a的实际值= %d\n", a);
printf("b的实际值= %d\n", b);
printf("开始时指针变量p指向的值= %d\n", *p);//输出23,因为*p是指向a的,
p = &b;//改变指针变量的值,即指向的地址值。看是否会指向b
printf("地址改变后指针变量p指向的值= %d\n", *p);//输出34,证明实际指向地址改变了。

五.指针与数组

指针在处理连续地址的情况下很有作用:如数组

char *p;//定义一个字符指针变量p
char school[] = "ABCDE";
printf("school= %s\n",school);//输出ABCDE
p = &school[0];//指向字符数组的第一个字符地址
printf("p指向字符串= %c\n", *p);//输出第一个字符A
p = p + 1;//将变量地址加1,观察地址指向的元素是否会变
printf("p地址值加1= %c\n", *p);//输出第二个字符B
p = p + 1;//在将变量地址加1,观察地址指向的元素是否会变
printf("p地址值加1= %c\n", *p);//输出第二个字符C

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值