//-------------------------------華麗分割線 *#)- 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;
}
//typedef int (*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;
}
typedef int (*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';//error
printf(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)//true
if(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);
}*/
這幾天的代碼段
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.