C语言指针总结

C语言指针总结

  1. 指针变量与指针

百度百科:{

1、“指针”是概念,“指针变量”是具体实现。指针也是一个变量,所以需要我们进行定义,而对于指针的定义,与一般变量一样。

2、一个变量的(内存)地址称为该变量的“指针”,通过指针能找到以它为地址的内存单元。而指针变量是用来存放另一个变量的地址的(即指针)。

3、指针和指针变量是两个不同的概念,但要注意的是,通常我们叙述时会把指针变量简称为指针,实际他们含义并不一样。

}

我们所用的函数,变量,常量,在计算机中得存在内存里,指针就是存它的位置的“坐标“(地址)(地址是个数,):0x20393032之类的

而指针变量就是一个内容物为地址(指针)(“坐标“)的变量,跟平时的 int
i,char c ,double d,float f 在本质上没有区别

指针变量所指首地址与步长
在这里插入图片描述

指针变量需要定义类型,因为这样更方便我们使用,

(可以同时规定其读取规则与移动距离)

如果定义指针变量时不需要定义所指类型,我们可能在用的语法:

指针与指针变量的取值取址

*,&,可以简单的理解成对于一个数,字符,函数,取了多少次地址,就得取多少次值才能变回来(其实不是所有一次又一次取址的啦)

指针与二维数组与N维数组

与上述概念相通,对于一个二维数组,我们定义其数组名为指针变量,值为首地址,而其取值后,变成在y轴上移动的一个指针(也可理解为步长为x轴定义域的指针,也可理解为一个指向一维数组的指针(值为一维数组首地址,对其取值结果为一维数组首元素))

即对于a【5】【6】:

有*(a+i)=a【i】(在二维数组中a【0】,a【1】……………. 分别指其所对应一维数组首地址)

有*(*(a+i)+j)==a【i】【j】

指针做函数参数

指针变量中存的是一个地址,地址是个数,那自然可以将地址作为参数传入函数:

定义(声明):

Void jijiji (int *p , int p[][5]
, int **p )

{

}

指针做函数返回值

在函数的学习中,我们知道:在定义一个函数时,需要确定其类型(即返回值类型),因为在函数调用时,语法的关系,使得函数看上去就像是一个变量(实在想不明白就这么理解吧TAT,至少能记住Orz){

I+=ppp(I,j,p);

Print(ppp(i),sda());

}

那么当函数返回指针类型时,必然会对其进行定义,这时还是把它(函数)当成个普通变量就好

Eg:

{返回int指针的 一个指向int的指针变量

Int

  • test() int * tets;

{

}

完全一致(滑稽)

}

指针变量存取自定义空间指针(地址)

(举个栗子叭,我喜欢calloc)

原型
: void *calloc(size_t n,
size_t size);

Eg:

Calloc(10,sizeof(int)*20);

返回一个10*20 的空间的
首地址,

(int*)Calloc(10,sizeof(int)*20);

强制转换成int类型(将读取规则强制改变)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值