C学习——指针

本文详细解析了C/C++中的指针概念,包括基本指针、二级指针、指向数组的指针及指向函数的指针等不同类型的指针。同时,文章还探讨了数组名与指针的区别,以及它们在运算中的应用。

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

1、指针

a)    int a;表示一个内存空间,这个空间用来存放一个整数(int);
b) int* a;
表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放整数的空间,即a)中提到的空间;
c) int** a;
表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放指针的空间,并且指向的这个空间中的指针,指向一个整数。也简单的说,指向了一个b)中提到的空间;
d) int (*a)[10];
表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个长度为10、类型为int的数组;和int** a的区别在于,+++=1之后的结果不一样,其他用法基本相同。
以上四种类型见上图表示。
e) int (*a)(int);
表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个函数,这个函数有一个类型为int的参数,并且函数的返回类型也是int

 

最近看到有人问到这样的问题"数组名能否自加问题",最后我经过验证得出了个结论,不可以,假设有一个整形数组int a[4] 如果出现a++表达式,则是一种错误的表达式,但是可以是a+1,所以推出了一个想法就是地址不可以自加,但是可以通过加几来完成,对数组中其他元素的遍历,也就是说必须有个"+"号这样才可以实现对数组名也就是地址的运算,如果没有加号则就是错误的.当给出一个指针时,int p;p=a;p++;这样的运算就是正确的,指针是一种可移动的东西,因此可以进行自加,自加有和p+1是一样的效果,所以由此推出:

    不管是什么类型的地址都没有自加,只能通过"+"(这就相当于是地址的移动了)几来实现地址的转移,而指针可以进行自加,效果和"+"几是一样的.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值