易截截图软件、单文件、免安装、纯绿色、仅160KB

C指针(2)

C语言必知必会(2)
4.函数和指针
4.1. 指向函数的指针
     指向函数的指针即通常说的函数指针,正是由于这些简称,所以它和返回指针的函数(指针函数)容易混淆,而且也由于写法上比较相近,就像数组指针(int (*p)[4])和指针数组(int *p[4])一样,前者表示指针变量p指向一个一维数组,这个数组含有4个int型变量,所以p++后,P就指向下一个一维数组;而后者表示p是一个数组,含有4个指向int型数的指针分别为p[0],p[1],p[2],p[3]。
int max(int x,int y){
}
int (*ps)()=swap;    //定义了一个函数指针指向swap函数
int (*ps)(int x,int y);    //也定义了一个函数指针。
调用时:max=max(a,b);或max=(*ps)(a,b);
4.2.  返回指针的函数
char *getString(char strings[][10],int n){
    return strings[i]    //假设返回最长字符串
}
调用时:char *p=getString(strings,4);
printf("%s\n",p);
4.3.  main函数
    main函数是C语言中最重要的一个函数,但是通常在编写程序的时候很少用到使用参数的main(int argc,char *args[])函数,下面是一个例子
int main(int argc,char *args[]){
    //char *args[]形参是一个指针数组,每个元素都是一个char型指针,所以可以指向一个数组
    while(argc-->1){
        printf("%s\n",*(++args));
    }
}
5.结构体
    简单的结构体很简单,要注意区分的是指向结构体的指针,如struct PEOPLE *p=people1;这里假设PEOPLE是定义的一个结构体类型,people1是PEOPLE类型的结构体变量。
使用指针调用结构时有两种方法:1)(*p).name或2)p->name。
    使用结构体来编写面向对象的代码。
例子:
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
    int x;
    int y;
    void (*print)();
}NODE;
void print();
NODE *initNODE(){
    NODE *node=(NODE*)malloc(sizeof(NODE));
    node->print=print;
    return node;
}
NODE *node=NULL;
int main(){
    node=initNODE(


相关文档:

用C#(C++)Socket后台编写自己的IIS服务器代替IIS

 本文触及到Socket TCP/IP编程方面的知识,其实这是很简单的内容,大家看不明的地方大可以先往下读,以后再看一遍,可能会觉得很简单。
很多人写网站用惯了IIS和Tomcat这些高级的后台来做网站后台服务,然而,在这些后台还没有问世之前,人们是怎么编写网站的呢?他们底层共同遵守的准则和标准又是什么呢?
这就是ht ......

ubuntu下解决 C compiler cannot create executables

       今天,在Ubuntu上安装Python遇到了问题: C compiler cannot create executables。这应该是编译环境出现了问题。在网上搜索了一下,解决方法如下:
       sudo apt-get install build-essential即可。
......

获取IP的C 代码

获取IP的C 代码 #include<stdio.h> #include<winsock2.h> #pragma comment(lib,"ws2_32.lib") void CheckIP(void) //定义CheckIP()函数,用于获取本机IP地址 { WSADATA wsaData; char name[255]; //定义用 ...
获取IP的C 代码
#include<stdio.h>
#include<winsock2.h>
#pragma comment(li ......

c中内存分布

堆和栈的区别
一、预备知识—程序的内存分配
一个由c/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap)— 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。 ......

如何理解c和c++的复杂类型声明

 曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗?
本文将由易到难,一步一步教会你如何理解这种复杂的C/C++声明。
我们将从每天都能碰到的较简单的声明入手,然后逐步加入const修饰符和typedef,还有函数指针,最后介绍一个能够让你准确地理解任何C/C++声明的“右左法则&rdquo ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号