C语言内功积累
时间:2010-11-30 来源:bluesky2254
1.函数指针申明时可以不用确定参数类型,只需要在定义和使用时带上参数类型即可。参考《func1.c》
main()
{
int f();
int i,a,b;
int (*p)();
scanf("%d",&a);
p=f;
for(i=1;i<9;i++)
{
printf("Please Input The %d Number:",i);
scanf("%d",&b);
a=(*p)(a,b);
}
printf("The Max Number is:%d",a);
} f(int x,int y)
{
int z;
z=(x>y)?x:y;
return z;
}
2.数组指针与指针数组:数组指针int (*a)[10],指向数组的指针,指针数组int *a[10],包含10个指针的数组。 3.char *p1="I love you";和char p2[]="I love you";区别:字符串存放的位置不同,读写属性不同。指针p1指向的字符串位于内存的只读区,不可改变,数组p2的字符串位于堆栈中,可读可写,可以改变。 4.C语言的extern和static是对立的关键字。 5.strcpy,memcpy,strcat等str函数返回值都是char *. 6.一般的,如果想让if判断一个变量的“真”、“假”,应直接使用if(var)、if(!var),表明其为“逻辑”判断;如果用if判断一个数值型变量(short、int、long等),应该用if(var==0),表明是与0进行“数值”上的比较;而判断指针则适宜用if(var==NULL),这是一种很好的编程习惯。 7.结构体数组和链表很相似,如果不需要中间插入元素,可以优先考虑用结构体数组。 8.extern "C"作用:实现在C++中调用C函数。
例如:
/*C语言头文件example.h*/
#ifndef EXAMPLE_H
#define EXAMPLE_H
extern int add(int x,int y);
/*C语言实现文件example.c*/
int add(int x,int y)
{
return (x)+(y);
}
/*C++实现文件,调用add(),example.cpp*/ 9.宏实现函数功能在参数有自增自减操作时有副作用
代码:
#define MIN(a,b) (a)<(b)?(a):(b)
test10()
{
int x=3;
int y=8;
printf("MIN:%d\n",MIN(x++,y));
} 输出: MIN:4
extern "C"
{
#include "example.h"
}
int main(int argc,char *argv[])
{
add(2,3);
return 0;
}
实际上extern "C"是表明下面的申明编译时按照C语言的方式处理,不要做优化,如果没有extern "C",在C++中将会对申明的函数名处理,上例中就会是add_int_int类似的函数名。 9.static 在函数内部,表示该变量的值在各个调用间一直保持延续性;
在函数这一级,表示该函数只对本文件可见
{
int f();
int i,a,b;
int (*p)();
scanf("%d",&a);
p=f;
for(i=1;i<9;i++)
{
printf("Please Input The %d Number:",i);
scanf("%d",&b);
a=(*p)(a,b);
}
printf("The Max Number is:%d",a);
} f(int x,int y)
{
int z;
z=(x>y)?x:y;
return z;
}
2.数组指针与指针数组:数组指针int (*a)[10],指向数组的指针,指针数组int *a[10],包含10个指针的数组。 3.char *p1="I love you";和char p2[]="I love you";区别:字符串存放的位置不同,读写属性不同。指针p1指向的字符串位于内存的只读区,不可改变,数组p2的字符串位于堆栈中,可读可写,可以改变。 4.C语言的extern和static是对立的关键字。 5.strcpy,memcpy,strcat等str函数返回值都是char *. 6.一般的,如果想让if判断一个变量的“真”、“假”,应直接使用if(var)、if(!var),表明其为“逻辑”判断;如果用if判断一个数值型变量(short、int、long等),应该用if(var==0),表明是与0进行“数值”上的比较;而判断指针则适宜用if(var==NULL),这是一种很好的编程习惯。 7.结构体数组和链表很相似,如果不需要中间插入元素,可以优先考虑用结构体数组。 8.extern "C"作用:实现在C++中调用C函数。
例如:
/*C语言头文件example.h*/
#ifndef EXAMPLE_H
#define EXAMPLE_H
extern int add(int x,int y);
/*C语言实现文件example.c*/
int add(int x,int y)
{
return (x)+(y);
}
/*C++实现文件,调用add(),example.cpp*/ 9.宏实现函数功能在参数有自增自减操作时有副作用
代码:
#define MIN(a,b) (a)<(b)?(a):(b)
test10()
{
int x=3;
int y=8;
printf("MIN:%d\n",MIN(x++,y));
} 输出: MIN:4
extern "C"
{
#include "example.h"
}
int main(int argc,char *argv[])
{
add(2,3);
return 0;
}
实际上extern "C"是表明下面的申明编译时按照C语言的方式处理,不要做优化,如果没有extern "C",在C++中将会对申明的函数名处理,上例中就会是add_int_int类似的函数名。 9.static 在函数内部,表示该变量的值在各个调用间一直保持延续性;
在函数这一级,表示该函数只对本文件可见
相关阅读 更多 +