malloc函数用于从堆中分配连续多个字节,如果失败则返回NULL。为了使用这个函数需要包含头文件stdlib.h。
free函数可以释放堆中分配的连续多个字节,需要首字节地址作为参数。
calloc函数也可以从堆中分配连续多个字节,失败也返回NULL。这个函数保证把分配到的变量清0。
realloc函数可以调整堆中变量的个数。
可以使用关键字const声明指针变量,
const int *p_value
这样声明的指针变量不能用来修改对应的整数变量内容
int * const p_value
这样声明的指针变量只能在初始化的时候被赋值一次,以后就不可以再被赋值了。
二级指针用来记录一级指针的地址,声明方法如下
int **pp_value = NULL;
其中**表示二级指针类型
*pp_value表示一级指针变量,**pp_value表示普通变量
函数名称可以代表函数的地址
函数指针变量可以记录函数地址,声明方法如下
int (*p_add)(int, int);
函数指针变量可以用来调用函数
qsort函数可以实现对数组中所有数据从小到大排序的功能,需要一个函数地址用来比较数组中两个数字之间的大小关系。
/*
malloc练习
*/
#include <stdio.h>
#include <stdlib.h>
int main() {
//int value = 0;
int *p_value = (int *)malloc(sizeof(int));
if (p_value) {
*p_value = 3;
printf("数字是%d\n", *p_value);
free(p_value);
p_value = NULL;
}
return 0;
}
/*
malloc练习
*/
#include <stdio.h>
#include <stdlib.h>
int main() {
int loop = 0;
int *p_value = malloc(4 * sizeof(int));
if (p_value) {
for (loop = 1; loop <= 4; loop++) {
// *(p_value+4 - loop) = loop;
p_value[4-loop] = loop;
}
for (loop = 0; loop <= 3; loop++) {
printf("%d ", *(p_value + loop));
}
printf("\n");
free(p_value);
p_value = NULL;
}
return 0;
}
/*
malloc练习
*/
#include <stdio.h>
#include <stdlib.h>
int *read() {
/*int value = 0;
return &value;*/
return (int *)malloc(sizeof(int));
}
int main() {
int *p_value = read();
if (p_value) {
*p_value = 3;
printf("数字是%d\n", *p_value);
free(p_value);
p_value = NULL;
}
return 0;
}
/*
calloc练习
*/
#include <stdio.h>
#include <stdlib.h>
int main() {
int *p_value = calloc(1, sizeof(int));
if (p_value) {
printf("数字是%d\n", *p_value);
free(p_value);
p_value = NULL;
}
return 0;
}
/*
realloc练习
*/
#include <stdio.h>
#include <stdlib.h>
int main() {
int loop = 0;
int *p_value = malloc(4 * sizeof(int));
if (p_value) {
for (loop = 5; loop <= 8; loop++) {
*(p_value + loop - 5) = loop;
}
int *p_value1 = realloc(p_value, 6 * sizeof(int));
if (p_value1) {
p_value = p_value1;
}
p_value1 = NULL;
for (loop = 0; loop <= 3; loop++) {
printf("%d ", *(p_value + loop));
}
printf("\n");
free(p_value);
p_value = NULL;
}
return 0;
}
/*
const指针练习
*/
#include <stdio.h>
int main() {
int value = 4;
//int *p_value = NULL;
//const int *p_value = NULL;
int * const p_value = NULL;
p_value = &value;
*p_value = 7;
return 0;
}
/*
const指针练习
*/
#include <stdio.h>
int sum(const int *p_value, int num) {
int loop = 0, result = 0;
for (loop = 0; loop <= (num - 1); loop++) {
//*(p_value + loop) = 0; 编译错误
result += *(p_value + loop);
}
return result;
}
int main() {
int values[] = {4, -2, 9, -4}, loop = 0;
int result = sum(values, 4);
printf("求和结果是%d\n", result);
for (loop = 0; loop <= 3; loop++) {
printf("%d ", values[loop]);
}
printf("\n");
return 0;
}
/*
函数指针练习
*/
#include <stdio.h>
int add(int x, int y) {
return x + y;
}
int main() {
int (*p_func)(int, int);
typedef int (*t_func)(int, int);
t_func p_func1 = add;
printf("add是%p\n", add);
p_func = add;
printf("p_func(2, 3)是%d\n", p_func(2, 3));
printf("p_func1(2, 3)是%d\n", p_func1(2, 3));
return 0;
}
/*
函数指针练习
*/
#include <stdio.h>
int mul(int x, int y) {
return x * y;
}
int div(int x, int y) {
return x / y;
}
int main() {
int (*p_func)(int, int) = NULL;
p_func = mul;
printf("p_func(10, 2)是%d\n", p_func(10, 2));
p_func = div;
printf("p_func(10, 2)是%d\n", p_func(10, 2));
return 0;
}
/*
qsort练习
*/
#include <stdio.h>
#include <stdlib.h>
int compare(const void * p_value, const void * p_value1) {
int *p_int1 = (int*)p_value;
int *p_int2 = (int*)p_value1;
if (*p_int1 > *p_int2) {
return 1;
}
else if (*p_int1 < *p_int2) {
return -1;
}
else {
return 0;
}
}
int compare1(const void * p_value, const void * p_value1) {
return 0 - compare(p_value, p_value1);
}
int main() {
int values[] = {7, -3, 5, 1, 4}, loop = 0;
qsort(values, 5, sizeof(int), compare);
for (loop = 0; loop <= 4; loop++) {
printf("%d ", values[loop]);
}
printf("\n");
qsort(values, 5, sizeof(int), compare1);
for (loop = 0; loop <= 4; loop++) {
printf("%d ", values[loop]);
}
printf("\n");
return 0;
}
分享到:
相关推荐
C语言基础十:移位(菜鸟编程教学10)
c语言基础
本教程“C语言基础教程(全)”旨在为初学者提供全面且深入的C语言学习指导。 教程内容可能包括以下几个方面: 1. **C语言概述**:介绍C语言的历史、特点和应用领域,让学习者对C语言有一个初步的认识。 2. **基本...
《C语言基础教程》是吕凤翥先生撰写的一本经典C语言教材,尤其适合初学者入门。这本书以其清晰的语言和实例解析,深受广大编程爱好者的喜爱。在学习C语言的过程中,掌握其基础知识至关重要,因为C语言是许多现代编程...
资源名称:C语言基础知识视频教程(21集)资源目录:【】C语言基础知识视频(01-03)【】C语言基础知识视频(04-06)【】C语言基础知识视频(07-09)【】C语言基础知识视频(10-12)【】C语言基础知识视频(13-15)【】C语言...
【标题】"C语言基础学习包"所涵盖的知识点主要围绕C语言的基础概念、语法结构、数据类型、控制结构、函数、数组、指针等方面展开。C语言是一种强大的、低级的编程语言,广泛用于系统编程、嵌入式开发、软件工程等多...
"C语言基础教材"是一份专为初学者设计的学习资源,旨在帮助零基础的学习者逐步掌握C语言的核心概念和技术。 这份教材以HTML格式提供,方便在网页浏览器中阅读和学习,同时也便于检索和打印。HTML文档通常包含丰富的...
本资源“C语言基础练习面试题”是针对初学者和有一定经验的开发者设计的一系列练习,旨在帮助他们巩固C语言基础知识,提升编程技能,并为面试做好准备。 在C语言的基础部分,这些练习涵盖了以下几个关键知识点: 1...
C语言的基础知识涵盖了语法、数据类型、控制结构、函数、指针等多个方面。 1. **语法基础**:C语言的语法结构清晰,主要包括声明、定义、表达式和语句。例如,声明变量(如`int a;`)、定义变量(如`int a = 10;`)...
C语言是一种广泛应用于系统编程、应用编程、嵌入式开发等多个领域的高级编程语言,它的语法简洁明了,是学习其他编程语言的良好基础。本课件集合涵盖了C语言的基础知识,适合初学者入门学习,同时也对准备二级考试的...
根据给定的C语言基础练习题及其描述,我们可以总结出一系列重要的C语言知识点,这些知识点不仅对于在校大学生,而且对于所有初学者都是极其宝贵的。下面将详细解释这些知识点: ### 1. C语言标识符规则 C语言中的...
本资源“C语言基础程序代码合集”旨在为初学者提供一系列基础的C语言程序示例,帮助他们理解和掌握C语言的核心概念。 在C语言中,基础知识点主要包括以下几个方面: 1. **基本数据类型**:C语言有几种基本的数据...
"C语言基础知识总结" 本资源摘要信息将对C语言的基础知识进行总结,涵盖了计算机基础知识、C语言基础知识、标识符、整数与实数、算术表达式、赋值表达式、复合赋值表达式、自加表达式、逗号表达式、强制类型转换、...
"C语言基础知识复习资料" 本资源摘要信息涵盖了C语言的基础知识,包括变量、数据类型、运算符、控制结构、函数、数组、指针等方面。通过学习和掌握这些知识点,可以帮助读者更好地理解和应用C语言。 变量和数据...
这个“C语言基础知识PPT文件”显然是一份面向初学者的学习资料,旨在帮助用户掌握C语言的基本概念和语法。 首先,C语言的基础部分通常包括以下几个方面: 1. **数据类型**:C语言提供了多种基本数据类型,如整型...
《C语言基础知识大全》这份文档深入浅出地介绍了C语言的核心概念与编程技巧,是学习C语言不可或缺的宝典。以下是从标题、描述、标签以及部分内容中提炼的关键知识点,旨在帮助初学者快速掌握C语言的基本原理与应用。...
C语言基础知识总结 C语言基础知识总结是计算机编程语言的基础知识,本文总结了C语言的基础知识点,涵盖程序结构、数据类型、运算符、控制结构、函数、数组、指针等领域。 一、程序结构 * 程序结构有三种:顺序...