Language C ,C语言 数据结构 栈队列树图
发布日期:2021-05-08 21:58:46 浏览次数:19 分类:精选文章

本文共 3246 字,大约阅读时间需要 10 分钟。

数组

int main(){
// array
int arr[10];
int j;
for(j=0;j<sizeof(arr)/sizeof(int);j++){
printf(“arr[%i] value is %i\n”,j,arr[j]);
}
}
sizeof()获取当前类型位数,sizeof(arr)/sizeof(int)获取数组长度

二维数组

int main(){   		int matrix[2][2];	matrix[0][0]=1;	matrix[0][1]=1;	matrix[1][0]=1;	matrix[1][1]=1;		int col;	int row;	for(row=0;row<2;row++){   		for(col=0;col<2;col++){   			printf("%d\t",matrix[row][col]);		}		printf("\n");	}	}

方法

int factorial(int n){
if(n=1){
return 1;
}
else{
return n*factorial(n-1);
}
}

返回值 方法名(参数)

值传递

value reference && address reference

#include 
#include
void change_value(int n){ n = 10;} int main(){ int n = 100; change_value(n); printf("the value of n is %i",n);}

结构体

#include 
#include
struct person{ int id; int age; char *name; }; typedef struct person person; int main(){ person p; p.id = 10; p.age = 20; p.name = "binhao"; printf("the name of a person is:%s",p.name); }

typedef 作用:后边的代码直接使用定义的结构体,不需要再使用struct关键字。

标准输入输出

scanf方法和printf方法,通过&和%可以完成标准输入输出
百分号%的作用如下:
%d整型输出,%ld长整型输出,
%p指针变量地址,如果数处数据不够8位数,则左边补零
%o以八进制数形式输出整数,
%x以十六进制数形式输出整数,
%u以十进制数输出unsigned型数据(无符号数)。
%c用来输出一个字符,
%s用来输出一个字符串,
%f用来输出实数,以小数形式输出,保留2位小数&+%.2f
%e以指数形式输出实数,
%g根据大小自动选f格式或e格式,且不输出无意义的零。

#include 
#include
int main(){ char a[10]; gets(a); printf("the value of a is:%s\n",a); int b; scanf("%i",&b); printf("\nthe value of b is:%i",b);}

指针

//pointer

int main(){

int a = 5;
int *p;
p = &a;
printf("%p",p);
}

result:在这里插入图片描述

int main(){   	int a = 5;	int *p;	p = &a;	printf("%p",p);	printf("\nthe value of address of p:%i",*p);}

定义一个指针变量*p ,使用的时候p表示一个地址,*p表示该地址上的值。

//pointerstruct node{   	int v1;	int v2;};typedef struct node node;int main(){   //	int arr[10];	//分配4byte的空间 //	int * arr = malloc(4);	//(int *) make it the same type		node *n;	printf("the size of the node:%i",sizeof(n));	node *m;	n-m;	m++;			int * arr = (int *)malloc(10*sizeof(int));	int i;	for(i=0;i<10;i++){   		arr[i]=15;	}	printf("the size of int:%i\n",sizeof(arr));	printf("%p",arr);}

数组求和

int sum(int arr[],int len){   	int i;	int res=0;	for(i=0;i

作用域Scope

只需要记住一点,变量只在自己所在作用域有效
demo:

int main(){   		int i = 9;//	int i;	{   		int i;	}	printf("the value of i is %i \n",i);	}

作用域优先级:

作用域级别越低优先级越高。

数据结构

栈,类似放堆叠的积木,只能往上放,也只能从上边取。

做应用层开发很少用到,但底层确实很重要。
想想? 如果没有栈一个函数里调用另一个函数会有什么结果?
基本实现如下:

#include 
#include
#include
struct stack_node{ int value; struct stack_node * next;};struct stack{ stack_node * top; int size;};typedef struct stack_node stack_node;typedef struct stack stack;stack * create_stack(){ stack * s = (stack *)malloc(sizeof(stack)); s->size = 0; s->top = NULL; return s;}bool empty_stack(stack * s){ return s->size == 0;}void push_stack(stack * s,int value){ stack_node * n = (stack_node *) malloc(sizeof(stack_node)); n->value = value; n->next = s->top; s->top = n; s->size++;}int pop_stack(stack * s){ int v = s->top->value; stack_node * sn = s->top; s->top = s->top->next; s->size--;// free memory free(sn); return v;}int main(){ stack *s; s = create_stack(); push_stack(s,20); push_stack(s,20); push_stack(s,20); int v = pop_stack(s); printf("pop a element of stack s:%i\n",v); printf("the size of stack s is:%i",s->size);}
上一篇:Codeforces 1400E Clear the Multiset(贪心 + 分治)
下一篇:为什么要看原文档,这可能就是原因吧

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月06日 08时32分47秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章