自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 链表(linked-list)--单向链表-- 函数模板

链表有若干个节点组成,用一个指针(head)指向开始的节点,每个节点(node)内包括存储的数据(value)和一个指向下一个节点的指针。最后一个节点为数据和表示链表结束的指针(NULL)。#include<stdio.h>typedef struct _node { int value; //存数据 struct _node *next; //指向下个节点的指针} Node;int main(int argc,int *__argv){ Node *

2021-01-30 17:43:03 225 2

原创 《C Prime plus》习题 --11章

1.设计并测试一个函数,从输入中获取下n个字符(包括空白、制表符、换行符),把结果储存在一个数组里,它的地址被传递作为一个参数。#include <stdio.h>#define N 10void testin(char *ch,int size);int main(int argc,char *argv[]){ int i = 0; char ch[N]; testin(ch,N); while(i<N){ putchar(

2021-01-28 21:17:38 256

原创 C prime plus》递归学习及问题

《C prime plus》递归学习时的问题使用递归计算n!#include<stdio.h>long fact(int n);int main(void){ int value; value = fact(3); printf("%d", value); return 0;}long fact(int n){ long val; if (n > 0) val = n * fact(n-1);//第13行 else val = 1; return v

2021-01-01 19:06:28 129

原创 静态本地变量-- static 修饰符

正常的本地变量,只在函数内部作用和存在,离开函数即消失。静态本地变量:在本地变量定义时用 static 修饰就成为了静态本地变量。当函数离开时,静态本地变量会继续存在并保持其值。静态本地变量的初始化只会在第一次进入这个函数时做,以后再进入函数时,会保持上次离开的值,而不会再次对其进行初始化。//例#include <stdio.h>int f(void);int main(){f();f();f();return 0;}int f(void){static int

2020-12-04 22:49:12 194

原创 第10章数组与指针 编程练习

1计算每年的总降水量、年平均降水量和5年中每月的平均降水量。#include <stdio.h>#define YEARS 5#define MONTHS 12float sumpy(float *); // 年降水量float averagepy(float); //每年平均降水float averam(float (*)[MONTHS], int ); // 第j月的平均降水int main(void){ float rains[YEARS][MONTHS]

2020-09-27 20:23:40 194

原创 复合字面量

给带int形参的函数传递一个值,可以传递一个int类型的变量,也可以是一个in类型的常量,例如5。对于带数组形参的函数,在C99标准以前,可以传递数组,但没有等价的数组常量。C99新增了复合字面量(compound literal)。字面量是除符号常量外的常量。例如,5是int类型字面量,81.3是double类型的字面量,'Y’是char类型的字面量,"elephant"是字符串字面量。对于数组,复合字面量类似数组初始化,前面是用括号括起来的类型名。例如,下面是个普通的数组声明:int diva

2020-09-24 14:48:43 361

原创 变长数组(VLA)

处理二维数组的函数原型#define COLS 4int junk2(int ar[][COLS],int rows) ;//ar是rows*4的数组处理n维数组的函数原型:int junkn(int arn[][4]...[5],int rows);/*arn是rows*4*...*5的数组*/通过以上两个函数原型,可以发现形参中,数组只有最左侧的参数可以变化。以二维数组为例,输入函数的数组一定是n4的数组,列数固定为4,行数被传递给形参rows。但是,如果要处理65的数组,由于列数不同,

2020-09-24 09:51:08 3060

原创 函数与多维数组

函数的形参为一维数组时int sum(int * n); //函数原型int sum(int * n){...} //函数定义那么如何编写处理二维数组的函数?假设数组 junk是一个内含 3个数组元素的数组,每个元素是内含4个int类型值的数组(即junk是一个3行4列的二维数组)。通过前面的讨论可知,这表明junk是一个指向数组(内含4个int类型值)的指针。那么可以这样声明函数的形参:void somefuntion(int(*pt)[4]);另外,如果当且仅当pt是一个函

2020-09-24 09:23:45 216

原创 指向多维数组的指针

普通指针int * ptrptr指向一个int类型的值。如何声明一个指针变量pz指向一个二维数组(例zippo)?zippo是首元素的地址,该元素是个内含两个int类型的值的一维数组。因此,pz必须指向一个内含两个int类型值的数组,而不是指向一个int类型值,声明如下:int (*pz)[2]; //pz指向一个内含两个int类型值的数组以上代码把pz声明为指向一个数组的指针,该数组内含两个int类型值。为什么要在声明中使用圆括号?因为[ ]的优先级高于,*先与pz结合,因此声明的是一

2020-09-20 21:44:21 254

原创 指针与多维数组的地址

回忆一维数组ar[],数组名ar是指向数组首元素ar[0]的地址。假设有如下二维数组int zippo[4][2];//内含4个int数组的数组数组名zippo是数组首元素zippo的地址。二维数组zippo的首元素是一个含有两个int元素的一维数组,所以zippo是这个内含两个int值的数组的地址。即zippo = &zippo*[0]。而zippo[0]是个内含两个int值的数组,所以zippo[0]的值与它的首元素zippo[0][0]*的地址相同。简而言之,zippo[0]是一个占

2020-09-20 19:32:15 171 1

原创 指针的基本用法(1)--保护数组中的数据

指针的基本用法(1)-- 处理数组指针的基本用法:(1)在函数间传递信息。例如,如果希望在被调函数中改变主调函数中的变量,必须使用指针。(2)用于处理数组的函数中。编写处理基本类型(如int)的函数时,需要选择是传递int类型的值还是传递指向int的指针。通常,都是直接传递数值,只有程序需要在函数中改变该数值时,才会传递指针。而对于数组,必须传递指针,因为这样效率高。如果一个函数按值传递数组,则必须先分配足够的空间储存原数组的副本,再把原数组所有数据拷贝至新的数组中。如果把数组的地址传递给函数,可以让

2020-09-20 18:50:26 238

原创 指针(3)--指针变量的基本操作)

指针(3)--指针变量的基本操作1、赋值2、解引用*3、取值&4、指针与整数相加5、递增指针6、指针减去一个整数7、递减指针8、指针求差有8种不同的操作。指针的转换说明为%p。1、赋值把地址赋给指针。例如用数组名、带地址运算符(&)的变量名、另一个指针进行赋值。int * p1 = &n;int *p2 = p1;int ar[3];int p3 = ar;注意:地址上的数据类型应该与指针类型相同。例如,不能把double类型的地址赋给指向int类型的指针(C99

2020-09-17 09:45:57 356

原创 指针(2)-- 函数、数组、指针

指针(2)-- 函数、数组、指针分析示例函数几种等价的函数原型及函数定义假设要求编写一个处理数组的函数,该函数如何定义及调用?假设有一个marbles的int类型的数组,sum函数返回数组中所有元素之和。分析sum函数的输入参数应该为marbles数组,则可能的函数调用为:total = sum(marbles); 由于数组名为该数组首元素的地址,因此sum()的实参marbles实际是一个储存int类型值的地址,应该把地址赋给指针形式的参数,即函数的形参应该是一个指向int类型变量的指针。

2020-09-16 21:59:41 119

原创 指针 (1)--数组与指针

指针 (1)--数组与指针 一、 数组一维数组多维数组二、 指针指针与数组的联系一、 数组一维数组int states[20]; //创建内含20个int型元素的数组char chs[15]; //创建内含15个char类型元素的数组int pow[3] = {1,2,3} //声明并初始化pow数组int qw[4] = {1,2}方括号[]表示states 、chs是数组。其中的数字表明数组中含有多少个元素。通过数组下标数(也成为索引)表示数组中的各元素,元素编号从0开始。要防止数

2020-09-16 21:18:28 90

原创 关键字const限定符的用法

关键字const限定符的用法1、创建符号常量2、创建const数组3、对形式参数使用const4、用于指针const限定符能限制程序对变量的修改。1、创建符号常量例:const int a = 1;const double b = 2.0;const char c = 'H';const long int d = 555555; 程序在使用过程中不能直接对符号常量的值进行更改,否则错误。效果与使用 #define 相同。通过指针可以修改const创建的符号常量。2、创建const数

2020-09-12 22:52:54 364

原创 《C Prime Plus》编程练习8.11.2

编程练习8.11.2要求我的程序要求 编写一个程序,在遇到 EOF 之前,把输入作为字符流读取。程序要打印每个输入的字符及其相应的ASCII十进制值。注意:在ASCII序列中,空格字符(ascii值为32)前面的字符都是非打印字符,要特殊处理这些字符。如果非打印字符是换行符(10)或制表符(9),则分别打印\n或\t。否则,使用控制字符表示法。例如,ASCII的1是Ctrl+A,可显示为^A。注意,A的ASCII值是Ctrl+A的值加上64。其他非打印字符也有类似的关系。除每次遇到换行符打印新

2020-09-02 16:39:09 131

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除