C_指针

本文深入浅出地讲解了指针的基本概念,包括地址的概念、指针的定义和初始化,以及如何通过指针来修改变量和传递参数到函数中。通过实例演示了不同类型的指针在内存中取数据的差异,帮助读者理解指针的使用场景。

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

 

一.说到指针就先来说指针是什么,其实很简单,指针就是地址,那么地址是什么呢,地址——在计算机中存储数据的地方的编号的一个叫法,就像你家住在朝阳区369号一样。

平时数据在计算机中是这个样子存储的。

F00AB450‘a’
F00AB451‘0’
F00AB4551
F000AB456‘e’

字符类型占一个字节,整型占用四个字节。

二.怎么定义指针和指针的初始化。

1)定义

直接举例子:int *p;//这就是定义一个int型的指针,变量是p,数据类型是int*。

那么其他的数据类型定义也就是一样的了,如char* ch; struct DATE date * d;

其实指针是没有数据类型,之所以定义数据类型是因为在使用时不会出错,比如int *p;那我在调用时就是从内存中取四个字节,char *ch;就是从内存中取一个字节。这也解释了指针不同类型为何无法兼容的问题。

2)初始化

直接举例子:int a,*p=&a; 或者 int a,*p; p=&a;

这两种初始化方式都是将做了将p指向a的操作,在这里解释两个符号

*代表是一个标志,和类型说明在同一行。

&代表取址,就是获得变量的地址

三.指针的使用。

①用于修改变量

int a=3;
int *b=&a;
*b=23;//这里的*,不同上述的标志,不和数据类型在同一行,这个叫取值符号,获取指针变量里面存放的地址,取出那个地址所指向的变量的值,*b等价于a;

②用于函数

void funt(int a)
{
a=1000;//这样不可改变
}

void funt(int *c)
{
*c=1000;//这样可改变
}


int main()
{
int a=123;
//funt(a);
funt(&a);
printf("%d",a);
return 0;
}

ps:

1.变量名和函数名只是地址的一种助记符,当源文件被编译和链接成可执行程序后,它们都会被替换成地址。编译和链接过程的一项重要任务就是找到这些名称所对应的地址。

2.我们认为变量名表示的是数据本身,而函数名、字符串名和数组名表示的是代码块或数据块的首地址(其实严格的来说也不是,只是这样方便理解)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值