指针学习体会

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int arr[4] = {1,2,3,4};
printf("%d\n", sizeof(arr));
printf("%d\n", sizeof(arr +0));
printf("%d\n", sizeof(arr));
printf("%d\n", sizeof(arr + 1));
printf("%d\n", sizeof(&arr));
printf("%d\n", sizeof(
&arr));
printf("%d\n", sizeof(&*arr));
printf("%d\n", sizeof(&arr[0] + 1));
printf("%d\n", sizeof(&arr + 1));
system(“pause”);
return 0;
}
指针学习心语:
1.指针的定义:指针就是一个存储变量首地址的变量,通俗的来说,如果把内存看成是一个个房间的话,那莫指针就相当于是这个房间的房间编号,我们可以根据这个房间编号来找到这个房间,而这个房间里边存的就是变量,如果对指针进行解引用操作,那么就相当于将这个房间的大门打开,从而找到房间里面的内容.
2.指针的几个要素,首先,由于真正所表示的是一个变量的地址,那么它的大小和变量是没有任何关系的,就相当于一个房间的房间号和它里面到底是存的什么之间确实是没有任何的关系,因此对于指针变量本身的类型而言,他们应该是一样的(32操作系统默认未4个字节,64位默认8个字节),而我们在定义指针时所写的char类型或者是int等等只是表示根据变量的首地址所读取连续内存的长度,例如ibiannt *p表示变量名为p的这个变量可以根据一个变量的首地址来读取与首地址相连的连续4个字节的地址,依次类推char为一个,short为两个…
3.野指针:所谓野指针就是指针所存的地址是一个没有定义或者说并没有像内存申请的地址,举个例子来说,加入一个去租房,那么他首先要去给老板说开放,从而获取到一个房间编号,然后根据这个编号去找到所对应的房子,那么这个开放的过程其实就是变量向系统申请内存的过程,而指针其实就是这个房间号,而如果一个人没有去开放而拿着一个房间号去找对应房间的话,那么他的这个房间号就是个野号,也就是个野指针(空指针并一定是野指针,野指针和空指针之间并无瓜葛),野指针万万不可以解引用.
4.指针于数组:在c语言中,数组变量会在很多情况下隐式转化为指针
1.函数调用;
2.数组名参与运算
而数组的特殊之处是他每个变量的地址其实都是相连的,利用这个性质,可以借用指针的加减于比较解决很多问题
5.指针数组与数组指针int *P[4],表示一个元素个数为4,每个元素都是一个指针的数组,而int(*p)[4]表示一个可读取内存数为int[4]的指针.
6.二重指针int **pp,表示一个存储指针变量地址的指针

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值