IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言复习7 -> 正文阅读

[C++知识库]C语言复习7

指针:

C语言程序运行中,变量或程序代码被存放在以字节为单位组织的存储器中。一般以变量所在的内存单元的第一个字节的地址作为它的地址;

指针变量定义:

类型名 *指针变量名

* 为指针声明符,也可作为间接访问运算符。

指针赋值:

指针之间的相互赋值只能在相同类型的指针之间进行,指针之间也可以相互赋值,可以用初始化了的指针变量给另一个指针变量作初始化。不能用数值作为指针变量的初值,但可以将一个指针变量初始化为一个空指针

指针赋值中,p=0等价于p=NULL;

指针运算:

在C语言中,指针的算术运算只包括两个相同类型的指针相减以及指针加上或减去一个整数。

设p和q为指针变量

p-q=p和q之间的数组元素的个数

若加上(int )型的强制类型转换

(int)p - (int) q=指针p与指针q之间的字节数

#include<stdio.h>
int main(void)
{
	int *p;
	int a[10];
	int i,n;
	long int  sum;
	printf("please enter your number:");
	scanf("%d",&n);
	printf("please enter number(%d):",n);
	
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	sum=0;
	for(i=0;i<n;i++)
	{
		sum=sum+a[i];
		
	}
	printf("the sum is %d\n",sum);
	
	sum=0;
	for(p=a;p<a+n;p++)
	{
		sum=sum+*p;
	}
	
	printf("the sum is %d\n",sum);
	
	return 0;
	 
 } 

数组与指针:

数组名本身便是一个指针

*(a+1)等价于a[i]

且在函数定义中,数组的形参a实际上是一个指针。当进行参数传递,主函数传递数值a的基地址时,编译器允许在作为参数声明的指针中使用数组方括号。

/冒泡排序/
#include<stdio.h>
#define MAXN 10
void swap(int *px,int *py);
void bubble(int a[],int n);
int main(void)
{
	int n,a[MAXN];
	int i;
	printf("enter n(n<10):");
	scanf("%d",&n);
	printf("enter %d integers:",n);
	
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	bubble (a,n);
	printf("after sorted:"); 
	for(i=0;i<n;i++)
	{
		printf("%3d",a[i]);
	}
	
	return 0;
}

void bubble(int a[],int n)
{
	int i,j;
	for(i=1;i<n;i++)
	{
		for(j=0;j<n-i;j++)
		{
			if(a[j]>a[j+1])
			{
				swap(&a[j],&a[j+1]);
			}
		}
	}
}

void swap (int *px,int *py)
{
	int t;
	t=*px;
	*px=*py;
	*py=t;
	
}
 

冒泡函数分析:

每一次大循环,便会确定一个数的位置,例如:

?

利用二分法可以进行函数优化,让数组分成两部分,则当数据庞大时可以简化运行时间;

#include<stdio.h>
#define MAXN 10
void swap(int *px,int *py);
void bubble(int a[],int n);
int main(void)
{
	int a[MAXN];
	int b[MAXN]={};
	int c[MAXN]={};
	int i,n,j,x,y;
	
	printf("please enter your number n:");
	scanf("%d",&n);
	
	printf("please enter %d number:",n);
	
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	
	j=a[n/2];
	
	x=0;
	y=0;
	for(i=0;i<n;i++)
	{
		if(a[i]<j)
		{
			
			b[x]=a[i];
			x++;
		}
		else
		{
			c[y]=a[i];
			y++;
		}
	}
	
		
	
	bubble(b,x);
	bubble(c,y);
	printf("after sorted:");
	for(i=0;i<x;i++)
	{
		printf("%3d",b[i]); 
	}
	for(i=0;i<y;i++)
	{
		printf("%3d",c[i]);
	}
}


void bubble(int a[],int n)
{
	int i,j;
	for(i=1;i<n;i++)
	{
		for(j=0;j<n-i;j++)
		{
			if(a[j]>a[j+1])
			{
				swap(&a[j],&a[j+1]);
			}
		}
	}
}

void swap (int *px,int *py)
{
	int t;
	t=*px;
	*px=*py;
	*py=t;
	
}
 
 

利用指针,可以很好的解决函数返回值的问题:

#include<stdio.h>
void month_day(int year,int yearday,int *pmonth,int *pday);

int main(void)
{
	int day,month,year,yearday;
	printf("input year and yearday: ");
	scanf("%d%d",&year,&yearday);
	month_day(year,yearday,&month,&day);
	printf("%d-%d-%d\n",year,month,day);
	
	return 0;
}

void month_day(int year,int yearday,int *pmonth,int *pday)
{
	int k,leap;
	int tab[2][13]={{0,31,28,31,30,31,30, 31 ,31, 30, 31, 30, 31},{0,31,29,31,30,31,30,31,31,30,31,30,31 }}; 
	
	leap=(year%4==0&&year%100!=0||year%400==0);//C语言中真为1,假为0, 
	
	for(k=1;yearday>tab[leap][k];k++)
	{
		yearday-=tab[leap][k];//依次减去月的天数,从而确认日和月 
	}
	*pmonth=k;
	*pday=yearday;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-15 22:13:21  更:2022-03-15 22:18:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:25:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码