K&R——第五章 指针与数组

#include <stdio.h>

#define maxsize 5000

char buf[maxsize];
char *head = buf;

char *new(int size)
{
	//分配元素字长

	//可用内存分配完毕
	if (maxsize - (buf - head) < size)
		return 0;
	head += size;
	return head - size;
}

int *arr;
int *arr2;
char *str;

int main()
{
	arr = new(3 * sizeof(int));
	arr2 = new(3 * sizeof(int));
	str = new(10 * sizeof(char));

	for (int i=0;i<3;i++)
		scanf("%d",&arr[i]);
	for (int i=0;i<3;i++)
		scanf("%d",&arr2[i]);

	scanf("%s",str);

	for (int i=0;i<6;i++)
		printf("%d\n",arr[i]);

	printf("%s\n",str);
}

  

时间: 2024-10-11 07:15:22

K&R——第五章 指针与数组的相关文章

第五章 指针与数组

5.2 指针与函数参数 #include <stdio.h> #include <stdlib.h> #include <ctype.h> int getch(void); void ungetch(int); /*getint 函数:将输入中的下一个整型数赋值给*pn */ int getint(int* pn) { int c, sign; while (isspace(c = getch())) /*跳过空白符*/ ; if (!isdigit(c) &&

&lt;深入理解C指针&gt;学习笔记和总结 第四章 指针和数组

数组是一个什么玩意: 数组和指针我的理解,有相同之处也有不同之处.因有相同之处,因此一些资料上说,数组和指针本质是相同的.因有不同之处,因此也有一些资料上说,数组和指针是不一样的. 相同之处: 数组名字和指针名字都代表了一个地址. 如:int num[10];num是数组名.函数开辟了一个存储十个整数类型的空间,而num是他们的首地址. int *p; p=(int *)malloc(10*sizeof(int));类似的,p也指向了首地址. 不同之处是,num[10]中的空间位置是在栈中,而

《C程序设计语言(第2版&#183;新版)》第5章 指针与数组

指针:保存变量地址的变量:在 C中应用广泛,因为1)指针往往是表达某个计算的唯一途径:2)使用指针往往可以写出更高效紧凑的代码:另一方面,1)指针和goto一样,会导致程序难以理解:2)粗心会很容易导致指针指向了错误的地方: 指针与数组关系密切: ANSI C明确制定了操纵指针的规则,并且使用void*代替char*作为通用指针的类型: 5.1 指针与地址 内存的组织:一系列连续编号或编址的存储单元,单元可以单个操纵也可以以连续成组的方式操纵:通常1个字节可以存放一个char,2个相邻字节可以存

第五章 指针(一)

C语言的强大和良好的自由性绝大部分体现在指针的灵活运用上,指针可以说是C语言的灵魂. 一.不同类型指针之间的区别和联系 1.不同类型的指针 指针变量占用内存的大小与 它本身的类型无关,而是由使用的计算机决定的.但是不同类型的指针之间也是有区别的,因为不同类型的指针变量所指向内存区域的大小并不相同.“指针就是地址,地址就是指针”这种说法并不准确,忽略了类型的作用,指针应该是:地址+类型. 2.普通指针和数组指针 1 int index; 2 char a[4] = {'a','b','c','d'

第五章:1.数组和广义表 -- 数组

前言: 2.3.4章讨论的线性结构中的数据元素都是非结构的原子类型,元素的值是不再分解的.本章讨论的两种数据结构---数组和广义表可以看成是线性表在下述含以上的扩展:表中的数据元素本身也是一个数据结构. 其中.数组是一种比较熟知的数据类型,几乎所有程序语言都把数组类型设定为固有类型,前两节节以抽象数据类型的形式讨论数组的定义和实现,使读者加深对数组的理解. 目录: 1.数组的定义 2.数组的顺序表示和实现 3.矩阵的压缩存储 4.广义表的定义 5.广义表的存储结构 6.m元多项式的表示 7.广义

The C++ Programming Language 学习笔记 第5章 指针、数组和结构

1.关于输出指向字符的指针的值. 现在定义,char c='a',char* pc=&c.在C中,输出该值只需要printf("%p\n",pc);而在C++中,如果cout<<pc<<endl;则会出现奇怪的一串字符,怎么回事呢.由于C++标准库中I/)类对<<操作符重载,因此在遇到字符型指针时会将其当作字符串名来处理,输出指针所指的字符串.所以我们可以将其先转化为void*,再输出. cout << static_cast&l

《深入理解C指针》第四章 指针和数组

2019-12-01 19:07:20 原文地址:https://www.cnblogs.com/JasonPeng1/p/11967221.html

C和指针 (pointers on C)——第十五章:输入输出函数

第十五章 输入输出函数 这一章读完的第一感觉就是"呵呵". 如果说上过C语言课,基本上scanf()/printf()算是用的比较熟练了.尤其是那些抽象的格式说明.还有scanf()为什么要加括号. 读过本书前面的内容的话,getchar(),putchar(),gets(),puts()这些应该也问题不大. 再如果的话,你学过计算机图形学,你玩过OpenGL,听说过双缓存机制,那么fflush()也肯定弄明白了. 再加上FILE的操作,输入输出定位刷新删除改名,流的概念. 这一章就会

数据结构期末复习第五章数组和广义表

数据结构期末复习第五章 数组和广义表 二维数组A[m][n]按行优先 寻址计算方法,每个数组元素占据d 个地址单元.     设数组的基址为LOC(a11) :LOC(aij)=LOC(a11)+((i-1)*n+j-1)*d     设数组的基址为LOC(a00) :LOC(aij)=LOC(a00)+( i*n+j )*d    二维数组A[m][n]按列优先 寻址计算方法,每个数组元素占据d 个地址单元.     设数组的基址为LOC(a11) :LOC(aij)=LOC(a11)+((j