代码改变世界

随笔分类 -  C

指向结构体的指针

2012-05-27 21:49 by youxin, 399 阅读, 收藏, 编辑
摘要: 在C语言中几乎可以创建指向任何类型的指针,包括用户自定义的类型。创建结构体指针是极常见的。下面是一个例子:typedef struct{ char name[21]; char city[21]; char state[3];} Rec;typedef Rec *RecPointer;RecPointer r;r=(RecPointer)malloc(sizeof(Rec));r是一个指向结构体的指针。请注意,因为r是一个指针,所以像其他指针一样占用4个字节的内存。而malloc语句会从堆上分配45字节的内存。*r是一个结构体,像任何其他Rec类型的结构体一样。下面的代码显示了这个指针变量的典 阅读全文

c语言NULL和0区别及NULL详解

2012-03-27 18:46 by youxin, 34936 阅读, 收藏, 编辑
摘要: 先看下面一段代码输出什么:#includeint main(){ int *p=NULL; printf("%s",p); }输出 ,单步调试可以看出执行int *p=NULL,p的值为0x00000000,可以看出,NULL在实际底层调用中就是0,在C语言中,NULL和0的值都是一样的,但是为了目的和用途及容易识别的原因,NULL用于指针和对象,0用于数值对于字符串的结尾,使用'\0',它的值也是0,但是让人一看就知道这是字符串的结尾,不是指针,也不是普通的数值在不同的系统中,NULL并非总是和0等同,NULL仅仅代表空值,也就是指向一个不被使用的地址,在 阅读全文

C语言fgets()函数

2012-03-27 18:02 by youxin, 1453 阅读, 收藏, 编辑
摘要: char * fgets ( char * str, int num, FILE * stream );Get string from stream 从文件流读取字符串Reads characters fromstreamand stores them as a C string intostruntil (num-1) characters have been read or either a newline or a the End-of-File is reached, whichever comes first. 存够n-1个字符或遇到换行符或到文件末尾 结束。A newline ch 阅读全文

c多个空格转成一个空格

2012-03-21 17:12 by youxin, 690 阅读, 收藏, 编辑
摘要: 主要思想是用一个计数器记录空格的数,程序如下:#include <stdio.h> void main() { int flag=1;/*当前不是空格,标志*/ char ch; int j=0;/*记数器*/ ch=getchar(); while(ch!=EOF) { if(ch==' ') { flag=0; j++; } else { flag=1; j=0; } if(!(flag==0&&j> 1)) putchar(ch); ch=getchar(); } } 还有一个去掉所以空格的好办法:#include<stdio.h& 阅读全文

vc下找不到#include <graphics.h>

2012-03-16 19:49 by youxin, 20373 阅读, 收藏, 编辑
摘要: 如果头文件有这个,#include <graphics.h>,编译时会显示Cannot open include file: 'graphics.h': No such file or directory原因是graphics.h是Tc中专有的,<graphics.h>这个头文件不是标准C的头文件,vc下没有这个头文件,画图用控件来。还是有办法在vc下用的,就是把这个头文件和相关文件放在相应的lib和include目录下,有人制作了一个软件包,EasyX_2011惊蛰版http://www.easyx.cn,里面有头文件和安装方法,我只是把文件放在对应目 阅读全文

马踏棋盘

2011-12-04 20:14 by youxin, 265 阅读, 收藏, 编辑
摘要: #include <stdio.h>#include <stdlib.h>#include <iostream.h>int deltai[]={2,1,-1,-2,-2,-1,1,2};int deltaj[]={1,2,2,1,-1,-2,-2,-1};int board[8][8];int exitn(int i, int j, int s, int a[]){ int i1,j1,k,count; for(count=k=0;k<8;k++){ i1=i+deltai[(s+k)%8]; j1=j+deltaj[(s+k)%8]; i... 阅读全文

ungetc

2011-12-04 15:29 by youxin, 526 阅读, 收藏, 编辑
摘要: 功 能 把一个字符退回到输入流中编辑本段用 法 int ungetc(char c, FILE *stream);输入参数 c 要写入的字符,stream 文件流指针输出参数 字符c - 操作成功,EOF - 操作失败编辑本段程序例 #include <stdio.h> #include <ctype.h> void main( void ) { int ch; int result = 0; printf( "Enter an integer: " ); /* Read in and convert number: */ while( ((ch = 阅读全文

error C2061: syntax error : identifier 'InitList' syntax error : ';'syntax error : missing ')' before '*'

2011-10-17 13:40 by youxin, 1850 阅读, 收藏, 编辑
摘要: sequ_list.hC/C++ code#include<stdio.h>#include<stdlib.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int status;typedef struct{ ElemType *elem; int length; int listsize;}sqlist;sequence_list.cC/C++ code#define LIST_INIT_SIZE 80#d 阅读全文

'=' : left operand must be l-value 左值和右值

2011-10-12 11:01 by youxin, 2134 阅读, 收藏, 编辑
摘要: 我们在看书的时候,经常可以看到关于 左值(L-value) 和 右值(R-value) 的概念,那么到底什么是左值,什么是右值,它们之间的区别又是在哪里呢? 通俗的讲,左值就是能够出现在赋值符号左面的东西,而右值就是那些可以出现在赋值符号右面的东西了。举个很简单的例子:a=b+100;那么这里a就是左值,b+25就是一个右值。左值和右值之间是不一定都能互换的,上面的这个例子就是不能互换的,如果写成b+100=a;#include<stdio.h>void main(){ int a=1; int b; b+100=a; printf("%d\n",a);}大家都 阅读全文

结构体前面加不加typedef有什么区别?

2011-10-12 10:29 by youxin, 490 阅读, 收藏, 编辑
摘要: 为什么c程序中定义结构时经常要用到typedef呢?如:typedefstruct_am_win_menutext{intidcintmessage}am_win_menutext为什么不直接把结构名定义为am_win_menutext然后使用就可以了。取个类型的别名有什么作用呢?---------------------------------------------------------------那是因为不取别名的话,每次定义都要加struct---------------------------------------------------------------“直接把结构名定义 阅读全文

sizeof使用

2011-10-10 18:44 by youxin, 212 阅读, 收藏, 编辑
摘要: c语言中判断数据类型长度符的关键字 用法 sizeof(类型说明符,数组名或表达式); 或 sizeof 变量名 1. 定义: sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。 MSDN上的解释为: The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of t... 阅读全文

c中不能用引用的办法

2011-10-10 12:42 by youxin, 671 阅读, 收藏, 编辑
摘要: c语言不能用引用,可以用指针来代替,sample程序如下,c++程序#include<iostream>using namespace std; typedef struct Str{ int i; int j; }str; int giveinfo(str &str); int main(){ str str; giveinfo(str); str.i = 89; printf("%d\n",str.i); printf("%d\n",str.j); return 0; } int giveinfo(str &str){ . 阅读全文

C++词汇解析集锦

2011-10-09 12:56 by youxin, 264 阅读, 收藏, 编辑
摘要: C++词汇解析集锦[ 2007-02-13 15:53:22 | 作者:Admin]字体大小:大|中|小原文地址:http://school.ogdev.net/ArticleShow.asp?id=6014&categoryid=10 1. 保留字 C++中,保留字也称关键字,它是预先定义好的标识符。见关键字的解释。 2.关键字 C++中已经被系统定义为特殊含义的一类标识符。C++中的关键字有:3.标识符 对变量、函数、标号和其它各种用户自定义对象的命名。在C++中,标识符长度没有限制,第一个字符必须是字母或下划线,其后若有字符则必须为字母、数字或下划线。例如count2,_x是正. 阅读全文

C++中的引用

2011-10-09 12:54 by youxin, 284 阅读, 收藏, 编辑
摘要: 引用传递完全是不同于指针传递的另一个标准c++的特色。指针传递虽能实现引用传递的功能,但是这种方式仍然需要另外开辟一段地址用来存放指针,而且需要操作地址,可读性差,又容易出错,引用传递则不会。 【导读】介绍C++引用的基本概念,通过详细的应用分析与说明,对引用进行全面、透彻地阐述引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。引用简介引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名;【例1】:int a; int &ra=a; //定义引用ra,它 阅读全文

Visual C++ 6.0工程中的项目文件都表示什么

2011-10-08 19:42 by youxin, 520 阅读, 收藏, 编辑
摘要: Visual C++ 6.0工程中的项目文件都表示什么 .opt:工程关于开发环境的参数文件。如工具条位置等信息。 .aps(AppStudio File)资源辅助文件,二进制格式,一般不用去管它。 .clw:ClassWizard信息文件,实际上是INI文件格式,有兴趣可以研究一下。有时候ClassWizard出了问题,手工修改CLW文件可以解决。如果此文件不存在的话,每次用ClassWizard的时候回提示是否重建。 .dsp(DevelopStudio Project):项目文件,文本格式,不过不熟悉的不要手工修改。 .dsw(DevelopStudio Workspace):... 阅读全文

函数指针和指针函数

2011-09-25 11:19 by youxin, 234 阅读, 收藏, 编辑
摘要: 在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址。可以使用指针变量指向数组的首地址,也可以使用指针变量指向函数代码的首地址,指向函数代码首地址的指针变量称为函数指针。1.函数指针定义函数类型 (*指针变量名)(形参列表);“函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少,后面的“形参列表”表示指针变量指向的函数所带的参数列表。例如:int (*f)(int x);double (*ptr)(double x);在定义函数指针时请注意:函数指针和它指向的函数的参数个数和类型都应该是—致的;函数指针的类型和函.. 阅读全文
点击右上角即可分享
微信分享提示