
C语言学习
学习内容分享,更加深入理解
HYT-TYH
这个作者很懒,什么都没留下…
展开
-
C-结构体指针
结构体指针struct Grades *p;p=&data;访问结构体成员(*结构体指针).成员名结构体指针->成员名#include<stdio.h>struct Date{ int year; int month; int day;};struct Grades{ float grade; int ID; char Name[20]; struct Date date;}data={原创 2022-03-31 20:50:56 · 408 阅读 · 0 评论 -
C-结构体数组
结构体数组定义//第一种struct 结构体名{ 结构体成员1; 结构体成员2; 结构体成员3;}数组名[长度];//第二种struct 结构体名{ 结构体成员1; 结构体成员2; 结构体成员3; };struct 结构体名 数组名[长度];初始化struct Grades{ char Name[20]; int ID; float grade;}data;struc原创 2022-03-31 20:50:28 · 201 阅读 · 0 评论 -
C-结构体嵌套
结构体嵌套#include<stdio.h>struct Date{ int year; int month; int day;};struct Grades{ float grade; int ID; char Name[20]; struct Date date;}data={ 99.5, 111111, "小明", {2022,3,31}};int main(){ p原创 2022-03-31 20:31:39 · 158 阅读 · 0 评论 -
C-结构体基础
结构体1.结构体声明struct 结构体名{ 结构体成员1; 结构体成员2; 结构体成员3; 结构体成员4;}struce Book{ char title[100]; char auther[50]; int price;};定义结构体类型变量语法 struct 结构体名称 结构体变量名;如 struct Grades data;访问结构体变量(点号(.))如 data.Name范例1:#inclu原创 2022-03-31 20:30:51 · 133 阅读 · 0 评论 -
C代码实现快速排序功能详解
快速排序基本思想通过一趟排序将待排序数据分割成独立的两部分,其中一部分的所有元素均比另一部分的元素小然后分别对这俩个部分继续进行排序,重复上述步骤直到排序完成实现描述声明函数,参数,参数1:要排序的数组,参数2:数组下标左值(为0),参数3:数组下标右值(数组长度减1)选取基准点,我们选择数组中居中的元素a.然后以基准点为标准,基准点左边的数从左向右开始寻找第一个大于基准点的数,然后停止b.接着继续以基准点为标准,基准点右边的数从右向左开始寻找第一个小于基准点的数,然后停止然后将原创 2022-03-31 14:33:27 · 200 阅读 · 0 评论 -
C-static关键字
static(静态局部变量)用static描述具有文件作用域的变量和函数时,将链接属性由external变为internal,它的作用范围从多文件共享变为单文件独享在模块内(但是在函数体外),一个被声明为静态的变量可以被模块内的所有函数访问但不能被模块外的其他函数访问在模块内,一个被声明为静态的函数只能被这一模块内的其他函数调用!使用static来声明局部变量时,就可以将局部变量指定为静态局部变量在函数体内,一个被声明为静态的变量在这个函数调用过程中维持其值不变,只会被初始化一次,如下.原创 2022-03-31 14:02:21 · 111 阅读 · 0 评论 -
C语言realloc函数和memcpy函数
realloc重新分配内存空间(当一开始申请的内存不够时,需要再增加内存则可以用realloc()函数实现)用memcpy实现#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ int *p=NULL; int *p2=NULL; //第一次申请内存空间 p=(int*)malloc(10*sizeof(i.原创 2022-03-30 21:27:49 · 910 阅读 · 0 评论 -
C语言初始化内存-mem函数和calloc函数
初始化内存空间mem开头的函数,处理内存空间memset 使用一个常量字节填充内存空间memset(p,0,N*sizeof(int));指定初始化的内存块p ,指定初始化的常量为0,指定内存块的尺寸N*sizeof(int) //N为常量memcpy 拷贝内存空间memcpy(p2,p1,n);将p1中的n个数据拷贝到p2中memmove 拷贝内存空间memcmp 比较内存空间memchr 在内存空间中搜索一个字符#include原创 2022-03-30 21:26:25 · 1643 阅读 · 0 评论 -
C语言free函数
free(需要加头函数 #include<stdlib.h>)释放动态内存空间函数原型: void free(void *ptr);free函数释放ptr参数指向的内存空间。该内存空间是由malloc、calloc或realloc函数申请的。否则,该函数将导致未定义行为,如果ptr参数是NULL,则不执行任何操作。注意:该函数不会修改ptr参数的值,所以调用后它仍然指向原来的地方(边为非法空间)#include<stdio.h>#include<st.原创 2022-03-30 21:23:23 · 8097 阅读 · 0 评论 -
C语言malloc函数
malloc(需要加头函数 #include<stdlib.h>)申请动态空间,动态内存存放在堆上,需要释放函数原型: void *malloc(size_t size);malloc函数向系统申请分配size个字节的内存空间,并返回一个指向这块空间的指针如果函数调用成功,则返回一个指向申请的内存空间的指针,由于返回类型是void 指针(void *),所以他可以被转换成任何类型的数据。如果调用失败,返回值为NULL还可以申请一块任意尺寸的内存空间malloc并不会.原创 2022-03-30 21:22:19 · 6177 阅读 · 0 评论 -
指针-常量指针-指向常量的指针-指向常量的常量指针...
常量和指针常量:520 ‘a’ 3.14#define PRICE 520#define A ‘a’#define PI 3.14使用const关键字修饰const int price =520;const char a=‘a’;const float pi = ‘3.14’;指向常量的指针:const int *pc=&cnum;指针可以修改为指向不同的常量指针可以修改为指向不同的变量 pc=&cnum ->原创 2022-03-28 20:35:34 · 401 阅读 · 0 评论 -
指向指针的指针
指向指针的指针#include<stdio.h>int main(){ int num=123; //|num|123| int *p=# //|p|&num| //|*p|num|123| int **pp=&p; //|pp|&p| //|*pp|p|&num| // |**pp|原创 2022-03-28 20:32:50 · 105 阅读 · 0 评论 -
void指针和NULL指针
void指针和NULL指针void-无类型void指针通常把他称为通用指针#include<stdio.h>int main(){ int num=213; int *p1=# char *p2="huang lao ba"; void *p3; p3=p2; printf("num=%d\n",num); printf("p1=%p\n",p1)原创 2022-03-28 20:27:20 · 147 阅读 · 0 评论 -
数组指针和二维数组
指针和二维数组二维数组array[4][5]数组名的含义:指向包含五个元素的指针证明如下:#include<stdio.h>int main(){ int array[4][5]={0}; printf("sizeof int : %d\n",sizeof(int)); printf("array : %p\n",array); printf("array+1 : %p\n",array+1);原创 2022-03-28 20:25:28 · 334 阅读 · 0 评论 -
指向数组的指针和指针的运算
指针和数组数组名其实就是地址信息,它是数组第一个元素的地址指向数组的指针char *p;char a[];p=a;p=&a[0];指针的运算当指针指向数组元素的时候,我们可以对指针变量进行加减运算,这样做的意义相当于指向距离指针所在位置向前或向后的第n个元素。对比标准的下标法访问数组元素,这种使用指针进行间接访问的方法叫做指针法#include<stdio.h>int main(){ int a[5]={15,466,8461,4987,131684原创 2022-03-28 20:22:56 · 337 阅读 · 0 评论 -
指针基本知识
指针指针和指针变量指针变量存放的是地址存放地址的变量是指针变量,存放的地址称作指针定义指针变量形式: 类型名 *指针变量名范例:char *pa; //定义一个指向字符型的指针变量int *pb; //定义一个指向整型的指针变量取地址运算符和取值运算符如果需要获取某个变量的地址,可以使用取地址运算(&)如:char *pa=&a;int pd=&f;如果需要访问指针变量指向的数据,可以使用取值运算符()如:printf("原创 2022-03-28 20:21:32 · 103 阅读 · 0 评论 -
数组,字符数组,二维数组
数组类型 数组名[元素个数]例子int a[6]; 24=4*6个字节char b[24]; 24=1*24个字节double c[3]; 24=8*3个自己访问数组元素数组名[下标]a[0]; a数组中的第一个元素b[1]; b数组中的第二个元素数组初始化(定义的同时进行赋值)将数组中所有元素初始化为0 int a[10]={0};赋予不同的值,剩余部分自动初始化为0原创 2022-03-28 20:19:56 · 104 阅读 · 0 评论 -
C运算符及优先级
C运算符原创 2022-03-18 22:43:13 · 496 阅读 · 0 评论 -
C语言-算数、关系、逻辑运算
算术运算+ - * / %关系运算<=>=!===><真->1 假->0非0->真 0->假关系运算值只有0和1逻辑运算与->&&或->||非->!运算符优先级别非(单目运算符)-算数-关系-与-或-赋值 (优先级从高到低)注意数学上0<x<10,在C语言中表示为0<x&&x<10而C语言中的0<x&原创 2022-03-16 20:27:05 · 1768 阅读 · 0 评论 -
C语言strcpy函数
#include<stdio.h>#include<string.h>int main(){ char str[]="123"; char str1[]="12345678"; char str2[]="huang lao ba zi"; strcpy(str,str1); printf("%s\n",str); strcpy(str,str2);原创 2022-03-22 20:57:43 · 568 阅读 · 1 评论 -
指针数组和数组指针
指针数组和数组指针指针和数组的区别数组名只是一个地址,而指针只是一个左值指针数组(数组)和数组指针(指针)int *p1[5]; 指针数组int (*p2)[5]; 数组指针指针数组 int *p1[5]; //指向整型变量的指针指针数组是一个数组,每个数组元素存放一个指针变量指针数组的初始化范例:#include<stdio.h>int main(){ char *p1[5]={ "黄老八原创 2022-03-25 09:35:44 · 73 阅读 · 0 评论 -
字符处理函数strlen-strcpy-strcmp
字符串处理函数(加头文件,#include<string.h>)strlen: 获取字符串的长度,而不是尺寸,不包含’\0’结束符而sizeof包括如下例 1 #include<stdio.h> 2 #include<string.h> 3 int main(){ 4 char str[]="huang lao ba is my son"; 5 printf("strlen str =%d\n",strl原创 2022-03-25 09:37:48 · 296 阅读 · 0 评论 -
算数运算符,逻辑运算符,关系运算符..等的优先级表
优先级运算符含义单双目使用形式1[ ]数组下标数组名[整型表达式]1( )括号(表达式)1.成员选择(对象)对象.成员名1->成员选择(指针)对象指针->成员名1++自加单目变量名++1–自减单目变量名–2-负号单目-表达式2(类型)类型强制转换单目(类型)表达式2++自加单目++变量名2–自减单目–变量名2*取值运算符单目...原创 2022-03-25 22:29:36 · 3219 阅读 · 0 评论