C语言学习笔记:指针基础

指针基础

什么是指针

在程序中使用的变量,常量,甚至函数等数据都会被载入到内存,而在内存中每一个字节都会有一个地址位对应,指针变量就是用来保存这些地址的变量

指针的声明与赋值

指针定义

C语言中,定义变量时,在变量名 前 写一个 * 星号,这个变量就变成了对应变量类型的指针变量,指针变量因其所占内存不同也分多种类型,此特性在指针运算时显得尤为重要,示例代码如下:

//指针类型 *指针名称
int    *p_int;    //整型类型的指针 
double *p_double;    //double 型的指针
float  *p_float;    //浮点型的指针
char   *p_char;    //字符型的指针

指针赋值

如下代码,我们在定义指针变量的同时将变量 a 的地址赋予它,此时 p 就指向了 a。因为指针变量存储的是一个地址,所以p 需要的一个地址,而a 的前面必须要加取地址符&,因为指针变量也是一种类型的变量,所以在命名时也要单独命名,不能与普通变量重名,否则会出现错误:

//指针赋值
int a = 1;
int *p = &a;

和普通变量一样,指针变量也可以被修改:

//定义普通变量
int a = 1,b=2;
//定义指针变量并赋值
int *p = &a;
//修改指针变量的值
p=&b;
注:在上述代码中*是一个特殊符号,表明一个变量是指针变量,定义指针时必须带
在修改指针变量的值时,因为已经知道了它是一个指针变量,就没必要多此一举再带上*,后边可以像使用普通变量一样来使用指针变量。
也就是说,定义指针变量时必须带*,给指针变量赋值时不能带*。

指针使用

#include <stdio.h>
int main(){
    int a = 1;
    int *p = &a;
    printf("a=%d\n",a); 
    printf("p=%d\n",p);
    printf("*p=%d\n",*p);
    return 0;
}

运行结果如下图:
在这里插入图片描述
通过运行结果我们可以看出来,a与 *p所打印出的数据相同,而p打印出的是一串数字(此数字为地址位,我们也可以用%#x打印,表示以十六进制形式输出,并附带前缀0X,来查看此串数字代表的地址)
这是因为变量p本身记录的是变量a所在的地址,而 *p指的是变量p存储的地址上的内容,这里的 *称为指针运算符,用来取得某个地址上的数据

参考资料:http://c.biancheng.net/view/1990.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值