C语言之指针 初习

指针
今天开始学习指针,从变量开始引入指针
int p;    //这是一个普通的整型变量
int *p;  //首先从P处开始,先与*结合,所以说明P是一个指针,然后再与int结合,        
    //说明指针所指向的内容的类型为int型.所以P是一个返回整型数据的指针
注意:指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。
搞清指针的四方面的内容:指针的类型、指针所指向的 类型、指针的值或者叫指针所指向的内存区、指针本身所占据的内存区。
定义: *(&sum);       //等价于sum;
定义类型取值符(*) 变量名赋值符 初始值;
int sum = 10;
int  *p = ∑
printf("%d",*p);//*p打印出的是sum的值
用地址符获取变量地址,可以用指针更改变量的值。
(*p++);//改变的是内存中的值
*p++;//改变的是指针向下一个类型字节
*p+n =         ; a[n] =           ;   //两者的效果等价的  改变n都是对数组中第n个元素值进行改变
在计算机中,任何一个函数都是有内存地址的,打印main函数地址:printf("%p",main);
定义一个变量int i时,编译器就会分配一个地址(例如200)并和i 关联起来,而int将限定编译器把这个区域中的内容作为整型数看待。

矩形内的值被视为int型
现在我们又有了int *p; 这个定义,假设p是指向变量i的(见下图),p中存的是变量i的地址。* 表示p是一个指针,而int表示p中所存的地址对应的变量(即变量i)的类型是int。

p指向i , int *p;中的int是指针p所指向的变量的类型  我们将int称为指针p的基类型,或指针p所指向的变量的类型。
类似地,我们可以有: char  *s     ( s是指向char型变量的指针 )
 float  *f     ( f是指向float型变量的指针 )
 double  *d   ( d是指向double型变量的指针 )
int *p = &i;& 用于取一个对象的地址,这里用于将i的地址赋给p , 那么指针p就指向了变量i 。上述的语句也可以分开写,如:int *p;  p = &i;
所以,理解了指针的核心,对于变量值得交换,*p让变量之间的交换,最最要注意的就是值的变化或者地址的交换问题,同一个函数内,地址的交换(虽然值没做任何改变)但是因为在同一函数内,所以打印出的结果是交换地址后的结果,对于将值传入的情况,就要分清楚是否发生了新的地址开辟赋值,还是在原来地址上进行改值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值