纸上得来终觉浅(c语言小知识总结)

纸上得来终觉浅(c语言小知识总结)

1.数组的初始定义

对于一个初始定义的数组,内部的值是随机的,若用{}(哪怕其中没有元素)也会让数组内元素初始化,默认为0。
若是用循环语句进行赋值,在一个长度为20的int型数组中赋值3个元素,那么第四个元素为0,剩下的空间中全为随机混乱的。
在超出长度的访问会显示出随机定义。

2.形参实参与指针

一个数组是如何在函数之间传递的
数组名相当于指向数组首地址的常量指针。
因数组代表数组第一个元素的地址,因此用数组名作为实参就可以将数组的起始地址传递给被调函数。所以当被调函数在函数体中修改数组元素时,真正修改的是存储在原存储单元中的数组元素。

void combine(const int b[]);		//防止数组中元素被调用函数修改
void combine(int b[]);				//正常操作
void combine(int  *const b);		//与上面等价
void combine(int *b);				//普通指针传入,使得传入的数组地址可以被修改!

附上一个简单的顺序表合并程序

#include<stdio.h>
int *combine(int a[],int const *b,int *c,int f,int d) {
	int e=0,g=0,h=0;
	while(e<f&&g<d) {
		if(a[e]>b[g])
			c[h++]=b[g++];
		else
			c[h++]=a[e++];
	}
	if(e==f)
		while(g<d)
			c[h++]=b[g++];
	else
		while(e<f)
			c[h++]=a[e++];
	return c;
}
int main() {
	int a[20],b[20],c[40],f,d;
	printf("请输入第一个顺序表的个数\n");
	scanf("%d",&f);
	printf("请输入第一个顺序表\n");
	for(int i=0; i<f; i++)
	scanf("%d",&a[i]);
	printf("请输入第二个顺序表的个数\n");
	scanf("%d",&d);
	printf("请输入第二个顺序表\n");
	for(int p=0; p<d; p++)
		scanf("%d",&b[p]);
	combine(a,b,c,f,d);
	printf("合成顺序表显示为:\n");
	for(int i=0; i<d+f; i++)
		printf("%d ",c[i]);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值