`

C语言基础十

    博客分类:
  • c
c 
阅读更多

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;
}






0
0
分享到:
评论

相关推荐

    C语言基础十:移位(菜鸟编程教学10).mobi

    C语言基础十:移位(菜鸟编程教学10)

    c语言基础c语言基础c语言基础

    c语言基础

    C语言基础教程(全)

    本教程“C语言基础教程(全)”旨在为初学者提供全面且深入的C语言学习指导。 教程内容可能包括以下几个方面: 1. **C语言概述**:介绍C语言的历史、特点和应用领域,让学习者对C语言有一个初步的认识。 2. **基本...

    C语言基础教程 吕凤翥

    《C语言基础教程》是吕凤翥先生撰写的一本经典C语言教材,尤其适合初学者入门。这本书以其清晰的语言和实例解析,深受广大编程爱好者的喜爱。在学习C语言的过程中,掌握其基础知识至关重要,因为C语言是许多现代编程...

    C语言基础知识视频教程(21集)

    资源名称:C语言基础知识视频教程(21集)资源目录:【】C语言基础知识视频(01-03)【】C语言基础知识视频(04-06)【】C语言基础知识视频(07-09)【】C语言基础知识视频(10-12)【】C语言基础知识视频(13-15)【】C语言...

    C语言基础学习包

    【标题】"C语言基础学习包"所涵盖的知识点主要围绕C语言的基础概念、语法结构、数据类型、控制结构、函数、数组、指针等方面展开。C语言是一种强大的、低级的编程语言,广泛用于系统编程、嵌入式开发、软件工程等多...

    c语言基础教材 零基础学习c语言

    "C语言基础教材"是一份专为初学者设计的学习资源,旨在帮助零基础的学习者逐步掌握C语言的核心概念和技术。 这份教材以HTML格式提供,方便在网页浏览器中阅读和学习,同时也便于检索和打印。HTML文档通常包含丰富的...

    C语言基础练习面试题

    本资源“C语言基础练习面试题”是针对初学者和有一定经验的开发者设计的一系列练习,旨在帮助他们巩固C语言基础知识,提升编程技能,并为面试做好准备。 在C语言的基础部分,这些练习涵盖了以下几个关键知识点: 1...

    C语言基础 C语言基础 C语言基础 C语言基础.zip

    C语言的基础知识涵盖了语法、数据类型、控制结构、函数、指针等多个方面。 1. **语法基础**:C语言的语法结构清晰,主要包括声明、定义、表达式和语句。例如,声明变量(如`int a;`)、定义变量(如`int a = 10;`)...

    C语言课件(C语言基础)

    C语言是一种广泛应用于系统编程、应用编程、嵌入式开发等多个领域的高级编程语言,它的语法简洁明了,是学习其他编程语言的良好基础。本课件集合涵盖了C语言的基础知识,适合初学者入门学习,同时也对准备二级考试的...

    c语言基础练习题及答案

    根据给定的C语言基础练习题及其描述,我们可以总结出一系列重要的C语言知识点,这些知识点不仅对于在校大学生,而且对于所有初学者都是极其宝贵的。下面将详细解释这些知识点: ### 1. C语言标识符规则 C语言中的...

    C语言基础程序代码合集

    本资源“C语言基础程序代码合集”旨在为初学者提供一系列基础的C语言程序示例,帮助他们理解和掌握C语言的核心概念。 在C语言中,基础知识点主要包括以下几个方面: 1. **基本数据类型**:C语言有几种基本的数据...

    超实用的C语言基础知识总结

    "C语言基础知识总结" 本资源摘要信息将对C语言的基础知识进行总结,涵盖了计算机基础知识、C语言基础知识、标识符、整数与实数、算术表达式、赋值表达式、复合赋值表达式、自加表达式、逗号表达式、强制类型转换、...

    C语言基础知识复习资料

    "C语言基础知识复习资料" 本资源摘要信息涵盖了C语言的基础知识,包括变量、数据类型、运算符、控制结构、函数、数组、指针等方面。通过学习和掌握这些知识点,可以帮助读者更好地理解和应用C语言。 变量和数据...

    C语言基础知识PPT文件

    这个“C语言基础知识PPT文件”显然是一份面向初学者的学习资料,旨在帮助用户掌握C语言的基本概念和语法。 首先,C语言的基础部分通常包括以下几个方面: 1. **数据类型**:C语言提供了多种基本数据类型,如整型...

    C语言基础知识大全

    《C语言基础知识大全》这份文档深入浅出地介绍了C语言的核心概念与编程技巧,是学习C语言不可或缺的宝典。以下是从标题、描述、标签以及部分内容中提炼的关键知识点,旨在帮助初学者快速掌握C语言的基本原理与应用。...

    c语言基础知识总结.pdf

    C语言基础知识总结 C语言基础知识总结是计算机编程语言的基础知识,本文总结了C语言的基础知识点,涵盖程序结构、数据类型、运算符、控制结构、函数、数组、指针等领域。 一、程序结构 * 程序结构有三种:顺序...

Global site tag (gtag.js) - Google Analytics