[C_5]内存补/对齐&函数

8内存对齐&补齐(了解)

变量的地址是变量本身所占字节数的倍数。分配空间到内存地址的边界上。对齐可以提高访问速度。
char 1 地址是1的倍数

int 4 地址是4的倍数

  typedef struct Goods 
  { 
      char name[18];  //18 
      double price //8 
      char special  //1 
      int num;   //4    
      short saled;  //2 
  } 

对齐导致结构变量内部内存空间空缺
补齐:两个同类型的变量大小必须一样,所以补成结构体中最大元素的倍数, 最大是4的倍数。
VC编译器是按结构体中最大元素中每个元素的所占内存字节数的倍数来计算的,最大不是4,可以是8


9 函数

9.1 函数形参


func()

func(void)

C

参数不固定

不需要参数

C++

不要参数


9.1.1数组作为函数参数

设计两个形参:1数组地址 2元素个数
形如:void add(int a[],int n)

#include<stdio.h>
int main(int argc,char* argv[])//shell给main函数传参。argc表示命令个数 
                            //argv存放每个命令字符串的地址
{
	if(argc == 1)
	{
		printf("Please input with commad:%s,...\n",argv[0]);
		return 1;
	}
	else
	{
	  printf("共%d个参数:",argc);
	  int i ;
	  for(i = 0;i < argc;i++)
	  {
		  printf("%s, ",argv[i]);
	  }
	}
	printf("\n");
	return 0;
}



9.1.2可变参数表

#include<stdio.h>
#include<stdarg.h>
int max(int ,...);
int main()
{
  int  n =	max(5,11,15,8,6,3);
  printf("最大值为:%d\n",n);
}

int max(int cnt,...)
{
	va_list v;
	va_start(v,cnt);
	int temp,max= va_arg(v,int) ;
	for(int n = 0;n < cnt; n++)
	{
		temp = va_arg(v,int);
		max = max<temp?temp:max;

	}
	va_end(v); //释放可变参数表
	return max;
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值