| C语言 |
benqmm
这个作者很懒,什么都没留下…
展开
-
结构体变量声明与赋值初始化
当变量定义与结构体定义本身一起声明时,可不需再次声明结构体变量,如struct structintcll{ char name[20]; int numb; float amt;}xyz; /*此处已将xyz申请为结构体变量,语句中可使用xyz.name等直接访问 */初始化结构体变量: 1.struct structintcll abc={.....}; 2.在定义后结构原创 2005-12-19 11:41:00 · 4126 阅读 · 0 评论 -
指针,C的灵魂(3)[转]
第三章。运算符&和*这里&是取地址运算符,*是...书上叫做“间接运算符”。&a的运算结果是一个指针,指针的类型是a的类型加个*,指针所指向的类型是a的类型,指针所指向的地址嘛,那就是a的地址。*p的运算结果就五花八门了。总之*p的结果是p所指向的东西,这个东西有这些特点:它的类型是p指向的类型,它所占用的地址是p所指向的地址。例五: int a=12; int b; int *p; int **原创 2005-12-19 11:55:00 · 1223 阅读 · 0 评论 -
在TC下,float结构体型数组的问题?
程序代码如下:在vc下通过,在tc不提示"scanf : floating point formats not linkedAbnormal program termination"错误。[quote]struct temp{ float data[3];};struct temp a[3];int i, j;for (i = 0; i { for (j = 0; j {原创 2005-12-21 09:18:00 · 998 阅读 · 0 评论 -
指针,C的灵魂(1)[转]
第一章。指针的概念指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: (1)int *ptr; (2)char *ptr; (3)int **ptr; (4)int (*ptr)[3]; (5)in原创 2005-12-19 11:53:00 · 1887 阅读 · 0 评论 -
关于指针《指针&数组》
那么什么时候数组&指针是相同的呢?在c语言的标准中有如下说明:1:表达式中的数组名被编译器当作一个指向该数组的第一个元素的指针。2:下标总是于指针的偏移量相同。3:在函数的声明中,数组名被编译器当作指向这个数组的第一个元素的指针。对于第一点比如:int a[10],*p,i=2;有几种访问a[i]的方式,作用是一样的。[1]:p=a;p[i];[2]:p=a;*(p+i);[3]:p=a+1;*p原创 2005-12-19 11:43:00 · 1044 阅读 · 0 评论 -
c函数指针的优先级规则---怎么来读一个很长的声明呢? [转]
在c中优先级别的次序是这样的。1. 声明中给括号包围起来的那部分。2.后缀操作符。3.前缀操作符。*表示“指向……的指针”4.如果const&volatile关键字的后面紧跟类型说明符号(如int),那么它作用于类型说明符,在其他情况下左边紧接的类型指针。 ---《c专家编程》那么♂来看一个例子char * const *(*next)();原创 2005-12-19 11:43:00 · 1019 阅读 · 0 评论 -
字符串相关应用
getchar();接受单个字符.gets(str): gets接受按下回车键以前输入的所有字符,gets用"/0"字符替换末尾的换行符"/n"。 str是已声明的字符数组puts(str):此函数用于在标准输出设备上显示一个字符串,字符串的输入以换行符结束(将"/0"转换为换行符号)。str是已声明的字符数组 如:puts("enter you name!") 或 puts(str数组名)ch原创 2005-12-19 11:40:00 · 768 阅读 · 0 评论 -
C语言函数参数的传递方式[原]
C语言,函数参数可以按照以下两种方式进行传递:1.按值传递: 按值传递参数时,它们的值是通过临时变量传递的,所以函数中变量值的改变,不会影响到主调程序中变量的值2.按地址传递: 按地址传递时,函数的参数一定是指针或者数组,由于采用按地址传递,函数参数的所以操作都是对地址进行的,所以他们的改变同时也影响到了主调程序中相对应变量的值。 如下swap(int *u,int *v)/* 按地址传原创 2005-12-19 11:37:00 · 2498 阅读 · 0 评论 -
二维指针赋值和取值
指针只能做加法或减法运算数组名为该数组第一个元素的地点地址,即 ptr=arr_numname表示指针指向数组的起点位置, 若取其他元素地址使用 ptr=&arr_numname[i]指针指向一维数组时: int *ptr 输入值用: ptr+i 输出用 *(ptr+i)指向二维数组: int (*ptr)[5] 输入原创 2005-12-19 11:35:00 · 1946 阅读 · 0 评论 -
教你理解复杂的C/C++声明[转]
原文: http://www.codeproject.com/cpp/complex_declarations.asp 作者:Vikram A Punathambekar 介绍 曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂的C/C++声明:我们将从每天都能碰到的较简单的声明入手,然后逐步加入原创 2005-12-21 09:21:00 · 633 阅读 · 0 评论 -
指针,C的灵魂(8-9) [转]
第八章。指针类型转换当我们初始化一个指针或给一个指针赋值时,赋值号的左边是一个指针,赋值号的右边是一个指针表达式。在我们前面所举的例子中,绝大多数情况下,指针的类型和指针表达式的类型是一样的,指针所指向的类型和指针表达式所指向的类型是一样的。 例十四: 1。 float f=12.3; 2。 float *fptr=&f; 3。 int *p; 在上面的例子中,假如我们想让指针p指向实数f,应该怎原创 2005-12-19 11:59:00 · 997 阅读 · 0 评论 -
指针,C的灵魂(6-7) [转]
第六章。指针和结构类型的关系可以声明一个指向结构类型对象的指针。 例十一: struct MyStruct { int a; int b; int c; } MyStruct ss={20,30,40};//声明了结构对象ss,并把ss的三个成员初始化为20,30和40。MyStruct *ptr=&ss;//声明了一个指向结构对象ss的指针。它的类型是MyStruct*,它指向的类型是MyStr原创 2005-12-19 11:58:00 · 915 阅读 · 0 评论 -
指针,C的灵魂(2)[转]
第二章。指针的算术运算指针可以加上或减去一个整数。指针的这种运算的意义和通常的数值的加减运算的意义是不一样的。例如: 例二: 1。 char a[20]; 2。 int *ptr=a; ... ... 3。 ptr++; 在上例中,指针ptr的类型是int*,它指向的类型是int,它被初始化为指向整形变量a。接下来的第3句中,指针ptr被加了1,编译器是这样处理的:它把指针ptr的值加上了size原创 2005-12-19 11:54:00 · 971 阅读 · 0 评论 -
主调函数对被调函数任类型说明(申明)的问题[转]
C语言规定,在以下几种情况下可以不在调用函数前对被调函数任类型说明(申请):1.如果函数的值(返回值)是整型或字符型,可以不必进行说明(申请),系统对它们自动按整型说明。2.如果被调用函数的定义出现在主调函数之前,可以不必加以说明。3.如果已在所有函数定义之前,在文件的开头,在函数的外部已说明了函数类型,刚在各个主调函数中不必对所调用的函数再作类型说明。 如:char letter();原创 2005-12-19 11:46:00 · 4399 阅读 · 0 评论 -
指针,C的灵魂(4-5)[转]
第四章。指针表达式。一个表达式的最后结果如果是一个指针,那么这个表达式就叫指针表达式。下面是一些指针表达式的例子: 例六: int a,b; int array[10]; int *pa; pa=&a;//&a是一个指针表达式。 int **ptr=&pa;//&pa也是一个指针表达式。 *ptr=&b;//*ptr和&b都是指针表达式。 pa=array; pa++;//这也是指针表达式。 例七原创 2005-12-19 11:56:00 · 1553 阅读 · 0 评论