指针

1.指针的声明与赋值
可以认为指针是一种特殊的数据类型,会根据声明时的数据类型来分配,指针分配的大小是固定的,一般32位机上都是4个字节,也就是指针存储地址的空间总大小为4个字节,这个在不同平台上可能不同
声明的格式 void* p;
·声明一个指针后,系统会分配一个地址
·赋值是赋值地址,为计算机保存数据的地址而不是实体的值,而是对应存储数据空间的地址
声明不赋值:

char* c;
int * i;

声明并赋值:

char a[10];
char* c = &a;  //将计算机上a存储的地址,保存到c指针在计算机内存的地址位置

区别指针的赋值与值得的复制

char *a,*b;//声明两个指针变量
b=a;//指针b指向指针a,也就是指针b的地址内存中存了a的地址(指针地址值运算)
*b = *a;//将地址a对应的值赋值给地址a对应的值(指针地址所对应的值运算)

空指针不能赋值:

char* p;
*p == 'a';    //这样是非法的,这是为什么呢,是因为指针p还没有初始化,前面p是被声明了,赋予了指针p本身的内存空间,也就是地址,但是该片空间还没有值,也就是没有所指向的值 

指针的指针的理解:
1.函数传值和传址
·传值:可以理解为元参数的一份拷贝,元参数不受影响

void change(int var_t)
{
   var_t=1;
   return;
}
void fun()
{
     int var1= 0;
     change(var1);   
     printf(" var1= %d /n");
     return ;
}

·传址:传递元参数的地址

void change(int *var_t)  //var_t = &var1 为var1在内存上的地址,通过* 来获取var1的值
{
   *var_t=1;  //去参考,给这个地址位置赋值
   return;
}
void fun()
{
     int var1= 0;
     change(&var1);   
     printf(" var1= %d /n");
     return ;
}

·指针的指针

void Malloc(char* *hw_t)  // 这里我们分为两部分:(char*) (*hw_t)   我们从右边开始,hw_t = &hw,我们知道指针中存的就是一个指针指向的地址,所以 *&hw = *hw_t,也就是取指针的值,因为指针的值依然是一个指针,所以就是(char*)  
{
    *hw_t = (char*) malloc(100);
}
void main()
{
    char* hw;  //定义一个指针,但是指针为空,没有保存可以内存地址
    Malloc_hw(&hw);   //传递hw指针自身的地址
}

以上还是个人理解,仅供参考,如有误,请勿模仿

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值