C语言的核心————指针(1)

C语言的核心————指针(1)

   学习指针,我们首先要搞清什么是指针?为什么存在指针?指针有哪些类型?多级指针以及指针表达式的一些相关内容。下面我将逐一介绍。
   指针是什么?指针变量是什么?变量指针又是什么?指针就是变量,用来存放地址的变量。简言之指针就是地址。指针变量指的是具有存储空间的一个变量,而变量指针就是变量的地址。

那对应到相应的代码块:

int main()
{
int a=10;//在内存中开辟一块空间
int *p=&a;//取出a的地址放入p变量中,p就是一个指针变量
return 0;
}


----------
在这里要强调的是 
1.定义就是在内存中开辟一块空间,而声明则不会开辟空间;
2.在32 位平台上,任何指针变量都开辟4个字节,所以一个指针变量的大小就是4个字节。
3.一个小的单元就是一个小的的字节。

计算机的内存分成很多个小的单元,每个单元都对应一个独一无二的地址,这样就一个地址标示一块空间。通过指针 我们就能找到一个对应的地址,指针就起到了标示的作用。 就如变量有不同的类型,整形、浮点形、短整形、长整形、单精度浮点形、双精度浮点形等等,相应的指针变量也具有相对应的类型,由“type+*”的方式构成。什么类型的指针就存放什么类型变量的地址,如char*类型的地址就存放char类型变量的地址。`

指针的类型决定了指针向前走或向后走一步有多大(指针所指向元素类型的大小)例如:
#include<stdio.h>
int main()
{
 int num=10;
 char* a=(char*)&num;
 int* b=&num;
 printf("%p\n",a+1);//char形一次移动一个字节
 printf("%p\n",b+1);//int 形一次移动4个字节
 

二级指针:
int a=10;
int *b=&a;
int **bb=&b;
a的地址存放在b中,b的地址存放在bb中,b是一级指针,ze bb是二级指针*b=100->a的值改为100 **bb=100->a的值改为100

`指针的左值和右值

简单理解为位于等号的左边还是右边,做左值的条件是必须具有该变量的贮存空间,做右值的条件是必须有内容。
例如:
&ch//ch是地址常量,不能做左值,只能做右值
cp//为变量,可做左值,也可作右值
*cp+1//常量,只可做右值
*(cp+1)//表示cp的一块空间,可做左值,也可做右值
++cp、cp++//不能做左值,只能做右值
*++cp、*cp++//左右值都可以

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值