c语言pointer,C语言讲义——指针(pointer)

本文深入介绍了C语言中的指针概念,包括指针作为存储地址的变量、如何为指针变量赋值以及使用取地址和间接寻址运算符。此外,还强调了为未初始化的指针赋予NULL值的重要性,以形成良好的编程习惯。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指针是C语言最重要的特性之一, 也是最容易被误解的特性之一。

1384db10a9cb06f2c898f00a9bca7c35.png

现代计算机把内存分割为字节(Byte), 每个字节都有唯一的地址(Address), 如果内存中有n个字节,可以把地址看做0~n-1的数。

b8f620b1a23de9a24e2e99265b554baf.png

程序中的每个变量都占据字节(至少1字节),把第一个字节的地址称为”变量的地址”, 假设变量int i占有内存2000~2003,则变量i的地址是2000。

7afd9632a8c2e67e9460345bd42593f4.png

指针变量(pointer variable)

口诀: 变量有位置,位置有地址 指针是变量,其值为地址

指针就是地址,指针变量就是存储地址的变量。 C语言要求每个指针变量只能指向一种特定的类型的对象。

int *p;

double *q;

char *r;

指针变量的赋值:

int i=2099;

int* p;

P = &i;

printf("%d", *p);

20c16d1d7d866827404b9de5cb8a6e65.png

值和地址

&取地址运算符 *间接寻址运算符

0365531cda1e90b844303a1af45f34c0.png

下例中:

i是普通变量,&i是存储变量的地址 p是指针,是地址,*p是指针指向地址的值

#include

main() {

int i=2099;

printf("变量的值:%d\n", i );

printf("变量的地址:%x\n", &i );

int *p;

p = &i;

printf("指針(值):%d\n", *p );

printf("指針(地址):%x\n", p );

}

NULL指针

在变量声明时,如果没有确切的地址可赋值,为指针变量赋一个NULL值是一个良好的编程习惯。 赋为NULL值的指针称为“空指针”。

#include

int main(int argc, char *argv[]) {

int *ptr = NULL;

printf("ptr的值是:char=%x, int=%d\n",ptr,ptr);

return 0;

}

运行结果:

ptr的值是:char=0, int=0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值