摘要: 1 函数类型 *函数名(形式参数表) //指针型函数就是返回值为指针地址的函数2 { 函数体 }函数执行后可以带回一个值给主调函数 ,这个值可以是标准类型的各种数据 , 也可以是不同类型的指针数据 ,然后使用这些指针间接的访问相关的数据如函数strchr()函数,它的功能是在一个字符串中查找一个字符 , 如果找到了则返回该字符的地址 ,否则返回空指针 1 #include <stdio.h> 2 3 char *strchr(char *str , char ch) 4 { 5 while(*str != ch && *str != '\0') 6 阅读全文
posted @ 2011-08-19 10:39 MATRIX | yan 阅读(8825) 评论(11) 推荐(0) 编辑
摘要: 1 函数类型 (* 函数指针变量)() ; //指向函数的入口地址一个函数是若干语句的集合 , 经编译后存储在函数代码存储区 , 并占有一片连续的存储空间 ,对函数指针只能用函数名赋值而无其他运算1 #include<stdio.h>2 3 int max(int x ,int y);4 5 int main()6 {7 int (* p)() ;//定义p是指向函数的指针变量8 int a , b , c ;9 10 p= max ;//将函数max的入口地址赋给指针变量p11 scanf("%d %d" ,&a ,&b) ;12 c= (* 阅读全文
posted @ 2011-08-19 09:06 MATRIX | yan 阅读(11537) 评论(1) 推荐(1) 编辑
摘要: 闲的无聊画了幅双链表的插图 , 双向链表的每个结点由数据成员以及指向后一结点和前一结点的链指针组成 ,如图所示:建立一个双链表,需要定义一个包含数据和两个链指针的结构体类型1 struct double_list2 {3 int data ;4 struct double_list *next ;5 struct double_list *prior ;6 };在双向链表中插入一个结点函数inst() ;该函数将newp指向的结点插入到双向链表遍历指针cp指向的结点之后1 inst(struct double_list *cp , struct double_list *newp)2 {3 n 阅读全文
posted @ 2011-08-18 22:06 MATRIX | yan 阅读(857) 评论(0) 推荐(1) 编辑
摘要: 建立有三个学生信息的单向链表,并实现其插入 ,排序 , 删除 ,输出 等操作 1 #include <stdio.h> 2 #include <malloc.h> 3 #include <stdlib.h> 4 5 struct stud{ 6 char name[15] ; 7 int number ; 8 float score[2]; 9 struct stud *next ; 10 }; 11 int n ; //定义全局变量n代表链表中结点个数 12 13 struct stud *creat(); //创建链表 14 struct stud *d 阅读全文
posted @ 2011-08-18 18:58 MATRIX | yan 阅读(652) 评论(3) 推荐(1) 编辑
摘要: 为了进一步熟悉与指针有关的编程,这里给出一个指针综合的例子 :编写一个函数,统计m行n列二维实型数组中整数,负数,零的个数方法一:使用指向实型数组中正数,负数,零的个数 1 #include <stdio.h> 2 3 void totol(float *q , int *i , int *j , int *k) 4 { 5 int m , n ; 6 for(m = 0 ; m < 3 ; m++) 7 { 8 for(n = 0 ; n < 4 ; n++) 9 {10 if(*(q + m * 4 + n)... 阅读全文
posted @ 2011-08-15 18:17 MATRIX | yan 阅读(611) 评论(0) 推荐(1) 编辑
摘要: 例一 : 1 #include <stdio.h> 2 #include <string.h> 3 4 struct Student { 5 int sid ; 6 char name[200] ; 7 int age ; 8 }; 9 10 void f(struct Student *p);11 void g(struct Student *p);12 void h(struct Student stu);13 14 int main()15 {16 struct Student stu ;17 18 f(&stu);19 g(&stu);20 h( 阅读全文
posted @ 2011-08-13 12:57 MATRIX | yan 阅读(4090) 评论(1) 推荐(0) 编辑
摘要: 一、C语言由源代码生成的各阶段如下:C源程序->编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件 其中编译预处理阶段,读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。或者说是扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。预处理过程先于编译器对源代码进行处理。 在C 语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预处理程序。尽管在目前绝大多数编译器都包含了预处理程序,但通常认为它们是独立于编译器的。预处理过程读入源 阅读全文
posted @ 2011-08-12 16:54 MATRIX | yan 阅读(508) 评论(0) 推荐(0) 编辑
摘要: 在C语言中 ,无论是一维数组还是二维数组 ,数组名实际是指针常量(是一个符号常量) ,称为数组指针 一 :一维数组和指针 ://数组名a是数组的起始地址 ,C语言规定 : a = &a[0] , a + 1 = &a[1] , ... , a + i = &a[i] , ...//由指针运算*和&的关系可知 :* a = a[0] , *(a + 1) = a[1] , ... , *(a + i) = a[i] , ...例一:任意输入5个整数 ,按由小到大次序输出,并输出其中最大最小数各自出现的次数 1 #include <stdio.h> 2 阅读全文
posted @ 2011-08-12 13:51 MATRIX | yan 阅读(822) 评论(6) 推荐(1) 编辑
摘要: 一 :取地址运算“&”与取内容运算“*”:单目运算“&”是取操作对象的地址 , “*”是取指针指向的对象的内容 , 两者互为逆运算int x , *p ;p = &x ; &(*p) = p 表示指针 ; *(&x)= x 表示变量x .二 :指针的算术运算 :指针的运算与其基类型有关 , 一般的,如果p是一个指针 ,n是一个正整数 ,则对指针 p 进行 +(-)操作后的实际地址是 :p +(-)n*sizeof(基类型)char *p ;int *q ;float *tk ; //假设当前地址为 : p = 2110H , q = 2231H , tk 阅读全文
posted @ 2011-08-11 13:13 MATRIX | yan 阅读(11047) 评论(4) 推荐(1) 编辑
摘要: #include <stdio.h>void print_triangle(int n,int x,int t) //n为每个小三角形的行数,x为连续输出三角形的个数,t为三角形的向右的位移(1表示1个空格) { int i,k,j; for(i=0;i<n;i++) //控制行数 { for(k=0;k<t;k++) //控制位移 printf("%c",32); //空格ASCII码为32 for(j=x;j>0;j--) //控制个数 { for(k=n-1;k>i;k--) printf("%c",32); f 阅读全文
posted @ 2011-08-11 12:40 MATRIX | yan 阅读(458) 评论(2) 推荐(1) 编辑