二级指针理解 + static的特殊用法

1.关于指针作为函数参数传递的内容理解

//例程如下,该例程运行之后,可以对比理解。

//对于GetMemory函数,二级指针自己类比理解。关键是区别此处为什么用二级指针,却//不能用一级指针。

#include <stdio.h>

#include <stdlib.h>

#include <malloc.h>

#include <string.h>

 

void GetMemory(char **p, int size)

{

(*p) = (char *)malloc(sizeof(char) * size);

}

 

//此处的p仅仅相当于是,传来的实参的一个拷贝。因此,p++不会改变实参,仅仅修改了形参。

//但是,因为p本身是一个指针,因此和实参指向的地址是一样的。所以*p可以修改了实参指向地//址的值。

void change(char * p)

{

*p = '#';

p ++;

//

printf("\n----------------------\n");

printf("p = %s\n",p);

}

 

void main(void)

{

char ch[13] = "Hello World!";

char * p = &ch[3];

 

printf("ch = %s\n",ch);

printf("p = %s\n",p);

printf("\n");

 

change(p);

 

printf("\n");

printf("ch = %s\n",ch);

printf("p = %s\n",p);

 

system("pause");

}



1. staticextern的用法

static在文件中*.h中定义,则在调用*.h时,在每个包含*.h中的*.c文件都有一份该变量自己的拷贝,相当于都在各自*.c文件中定义,占有各自的空间。相互之间各用各的。

【优点】相互之间不会干扰 【缺点】占用内存

-----------------PS:优缺点都是相对而言的

extern则需要变量在某一个*.c中定义,在*.h(或在其他用到该变量的*.c文件中)用extern再次进行变量的声明,则可以在其他*.c中调用。这种情况下,仅仅占据一份内存。

【优点】仅仅占据一份内存 【缺点】要考虑变量在什么地方被修改了。

-----------------PS:优缺点都是相对而言的


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值