这几天的代码段

来源:互联网 发布:中国最大的程序员社区 编辑:程序博客网 时间:2024/05/22 11:30
//-------------------------------华丽分割线 *#)- o -(#*  -----------------------------------------/*//传递指针的指针;可以修改指针的内容#include<stdio.h>#include<stdlib.h>void all(int **arr,int  size,int value){int i;*arr=(int *)malloc(size *sizeof(int ));printf("%#x\n",arr);printf("%#x\n",*arr);if(*arr!=NULL){for(i=0;i<size;i++){*(*arr+i)=value;}}//free(*arr);}void main(){int *p=NULL;printf("%#x\n",p);all(&p,5,45);printf("%d\n",p[2]);printf("%#x\n",p);}//-------------------------------华丽分割线 *#)- o -(#*  -----------------------------------------///*#include<stdio.h>#include<stdlib.h>void all(int *arr,int  size,int value){int i;printf("%#x\n",arr);arr=(int *)malloc(size *sizeof(int ));printf("%#x\n",arr);if(arr!=NULL){for(i=0;i<size;i++){*(arr+i)=value;}}printf("%d\n",*arr);}void main(){int *p=NULL;//int i;printf("%#x\n",p);all(p,5,45);printf("%#x\n",p);}//-------------------------------华丽分割线 *#)- o -(#*  -----------------------------------------//函数指针的应用#include<stdio.h>int  mianji(){int a=3;int b=4;int c;c=a*b;return c;}void  main(){typedef int (*f)();f f1;f1=mianji;printf("%d",f1());}  //-------------------------------华丽分割线 *#)- o -(#*  -----------------------------------------//传递函数的指针#include<stdio.h>int add(int num1,int num2){return num1+num2;}int sub(int num1,int num2){return num1-num2;}//typedefint (*ftr)(int,int);int (*ftr)(int ,int );int compute(int (*ftr)(int ,int ),int ,int );void main(){  printf("%d\n",compute(add,1,2));  printf("%d\n",compute(sub,3,5));}int compute(int (*ftr)(int ,int ) ,int num1,int num2){return  ftr(num1,num2);}//-------------------------------华丽分割线 *#)- o -(#*  -----------------------------------------//返回函数指针#include<stdio.h>int add(int num1,int num2){return num1+num2;}int sub(int num1,int num2){return num1-num2;}typedefint (*ftr)(int,int);int compute(ftr,int ,int );ftr select(char opcode){   switch(opcode)   {   case '+':   return add;   case '-':   return sub;   }}int eva(char opcode,int num1,int num2){ftr f1=select(opcode);return f1(num1,num2);}void main(){  printf("%d\n",eva('+',1,5));}int compute(ftr f1 ,int num1,int num2){return  f1(num1,num2);}//typedef的用法#include<stdio.h>void main(){typedef int a[2];typedef int *d[3];d g;a f;f[1]=4;g[2]=&f[1];printf("%d--%d--%d",f[1],&f[1],g[2]);}//-------------------------------华丽分割线 *#)- o -(#*  -----------------------------------------//使用函数指针数组//第一种思想#include<stdio.h>typedef void (*ftr)();     void ss(){printf("%d\n",8);}void aa(){       printf("%d\n",100);  }void ab(){       printf("%d\n",10);  }ftr f1[]={ss,aa,ab};void main(){   f1[0]();}//第二种思想#include<stdio.h>typedef int (*operation)(int ,int );operation operations[128]={NULL};int add(int num1,int num2){return num1+num2;}int sub(int num1,int num2){return num1-num2;}void in(){operations['+']=add;operations['-']=sub;}int eva(char opcode,int num1,int num2){   // operation ss;   //ss=operations[opcode];  //return ss(num1,num2);    return operations[opcode](num1,num2);} void main(){  in();  printf("%d\n",eva('-',5,6));}//-------------------------------华丽分割线 *#)- o -(#*  -----------------------------------------//比较函数指针ftr f1=add;if(f1==add){printf("函数地址一致是add");}else{printf("函数地址不一致;不是add函数");}//-------------------------------华丽分割线 *#)- o -(#*  -----------------------------------------//转换函数指针#include<stdio.h>typedef int (*ptr)(int);typedef int (*ptr1)(int ,int );int add(int a ,int b){return  a+b;}//void*不一定能跟函数指针上void *p=add;//这是错的void main(){ptr1 aa=add;    ptr bb=(ptr)aa;aa =(ptr1)bb;    printf("%d\n",aa(5,6));}//-------------------------------华丽分割线 *#)- o -(#*  -----------------------------------------//void指针#include<stdio.h>void main(){void *p;  printf("%#x---%d",&p , sizeof(void *));  printf("\n%#x---%d",*&p , sizeof(void *));  //printf("\n%d",*p);error}//-------------------------------华丽分割线 *#)- o -(#*  -----------------------------------------#include<stdio.h>typedef int (*ptr1)(int ,int );int add(int a ,int b){return  a+b;}void main(){void *p;ptr1 aa=add;    p=(void*)aa;//printf("%d\n",aa(5,6));aa=(ptr1)p;    printf("%d\n",aa(5,6));}//-------------------------------华丽分割线 *#)- o -(#*  -----------------------------------------//作为参数的数组声明#include<stdio.h>void main(){char hello[]="hello";printf("%s\n",hello);//在这里数组作为参数和数组首地址作为参数是一样的效果printf("%s\n",&hello);printf(hello);printf("\n");}//-------------------------------华丽分割线 *#)- o -(#*  -----------------------------------------//混淆指针和指针所指向的数据#include<stdio.h>void main(){char *p,*q;p="sssaa";//实际含义是P指向一个内容为“sssaa\0”的字符数组的指针printf(p);//*(p+1)='a';//这样定义的字符串常量只有只读属性ANSI C中标准禁止对string literal 作出修改//printf(p);printf("\n%#x\n",p);//含义是p指向的那个数组的首地址printf("%#x\n",&p);//含义是p的内存地址q=p;//复制指针并不同时复制指针所指向的数据    //q[1]='Y';//errorprintf(q);}//-------------------------------华丽分割线 *#)- o -(#*  -----------------------------------------#include<stdio.h>void main(){int i;int a[6];for(i=0;i<=6;i++){        a[i]=0;}printf("%d",a[6]);//for(i=0;i<=6;i++)//{  //     printf("%d",a[i]);//}}//-------------------------------华丽分割线 *#)- o -(#*  -----------------------------------------//由0转换而来的指针不等于任何有效的指针,不能用该指针指向内存中的内容if(p==(char *)0)//trueif(strcmp(p,(char *)0)==0)//false//-------------------------------华丽分割线 *#)- o -(#*  -----------------------------------------//函数功能为:将一个长度无规律的输入数据送到缓冲区中(即一块能容纳N个字符的内存)中去,//------每当这块内存被填满时,就将缓冲区的内容写出//-------------------------------华丽分割线 *#)- o -(#*  -----------------------------------------#include<stdio.h>void main(){float a=3.99999999;printf("%f",a);}//-------------------------------华丽分割线 *#)- o -(#*  -----------------------------------------#include<stdio.h>void main(){size_t f=100;    printf("%d",f);}//-------------------------------华丽分割线 *#)- o -(#*  -----------------------------------------#include<stdio.h> int main(){int k;k=sizeof('A');printf("%d\n",k);//中在c语言k的大小为4,c++中它的大小为1.//system("pause");return 0; }//-------------------------------华丽分割线 *#)- o -(#*  -----------------------------------------//字符串的拼接#include<stdio.h>#include<stdlib.h>#include<string.h>void main(){char *error="ERROR: ";char *errorp="one world one dream!";char *ftr=(char *)malloc(strlen(error)+strlen(errorp)+1);strcpy(ftr,error);strcat(ftr,errorp);printf("%s\n",error);printf("%s\n",errorp);printf("%s\n",ftr);}//-------------------------------华丽分割线 *#)- o -(#*  -----------------------------------------//字符串的拼接----error这个是错的#include<stdio.h>#include<stdlib.h>#include<string.h>void main(){char * error="error";char *errorp="kkkkkkkkkkkkkkkkkkk";strcat(error,errorp);printf("%s\n",error);printf("%s\n",errorp);}*/

0 0