石头:2229 - 371 x
Manoj Kumar斯利瓦斯塔瓦*,Asoke纳
|
通讯作者:Manoj Kumar斯利瓦斯塔瓦电子邮件:mksrivastav2011@rediffmail |
相关文章Pubmed,谷歌学者 |
访问更多的相关文章全球研究计算机科学杂志》上
纳等人已经发表了一篇论文在数学描述的关键字、变量声明,这种语言的数组,用户定义函数。作者给的定义变量,数组初始化,从简单的数学推导过程调用一个函数或数学模型。作者已经表明可以概念化数学推导的任何高级语言或数学模型。本文作者试图探讨这种语言的一些重要概念如指针,结构、工会和变量声明在c -型语言。结构是一个复杂的数据类型,因此作者试图运用一些简单的数学逻辑或解释结构模型。指针是c语言中一个重要的概念,作者也从简单的数学模型试图解释它。作者试图证明有一个为每个组件一个数学逻辑或模型的任何高级语言。目前的方法可以进一步扩展到其他高级语言,脚本语言或面向对象语言、数据库管理系统等。
关键字 |
(这种语言中,指针,结构,数理逻辑) |
介绍 |
语言„CA¢包含变量、数据类型、控制语句,循环语句,数组下标变量、函数、字符串、文件,指针,结构、工会、位域,位操作运算符,c-pre处理器指令,c-unix界面等。纳等[1]试图解释在数学上的意义不同的数据类型,不同的控制语句、数组和一些具体的例子。本文作者试图探索指针的概念,利用简单的数学模型结构、工会和变量。同样的想法可能在未来的扩展设计任何新的高级语言。在c语言指针指的是一种特殊类型的变量可以存储另一个变量的地址。结构是一种派生数据类型可以定义各种数据类型相同的结构。联盟是一个类型,不同的数据类型将共享相同的内存位置。它是一些复杂的过程,不同的数据类型将从同一位置读取数据。在本文作者试图探讨几种常见特性,比如控制语句,循环语句,输入和输出函数或语句,关系运算符、逻辑运算符,不同的数据类型、数组、指针类型变量、字符串操作,函数、子程序或子程序等。等面向对象的语言有一些额外的类,对象,继承,多态,数据封装等。 |
一个特定的语句的语法可能是不同的在两个不同的语言但声明的目的是相同的。作者试图解释不同的语句使用一些统一的数学模型。本文作者认为指针,结构,工会的c语言使用简单的数学模型。编程语言如c语言的数学建模将帮助用户理解高级语言更好。作者还提出,可以应用到其他类似的数学描述与小修订新的语言。 |
不同的数学模型 |
在数学中,一个变量是一个符号指定的值可能会改变在给定的范围内设置的问题或一组操作。 |
一个变量是一个符号或可能会关联到某个值(s)。 |
变量是进一步分为两类: |
(我)因变量 |
(2)独立的变量。 |
独立变量被视为输入系统,可能需要在不同的自由价值。因变量的值变化的结果的其他值的变化系统。 |
一个变量是一个命名的存储区域可以容纳一个值(数字或字符)。C语言要求声明每个变量的名称你要使用的类型。 |
通用符号用来代表一个变量x, y, z, p, q, r……等。现在我们正在使用一个特殊的符号来表示变量形式* x, y, z *, *, *, * k,…………………. .等。符号之间的差异和* x是第一个x用于表示一个变量的地址指向一些明确的数据类型和* x值„xA¢指向。 |
指针:一个指针是一个变量,它存储内存地址。像所有其他变量也有一个名称,必须宣布,在内存中占用一些固定的空间。它被称为指针,因为它指向一个特定的位置存储在内存地址的位置。 |
代表指针在数学术语我们两组如下: |
S = {v数据:包含变量的值} |
X ={数据:包含变量的地址} |
我们正在采取映射T: S X, T (v) = v的年代和X。 |
在编程语言C,一个指针是一个变量;这商店一些特定类型的另一个变量的地址。给出一个变量的地址&符号(&),叫做一元运算符或地址操作符评估操作数的地址。这里地址变量的值依赖于地址。 |
例子: |
# include < stdio . h > |
void main () |
{ |
int * a * b * c / *这里的a, b, c三个指针 |
指向一个整数数据* / |
int i = 10 j = 20 k = 30; |
=我;/ * =地址我* / |
b = j;/ * b =地址j * / |
c =大部分;/ * c =地址k * / |
clrscr (); |
printf("地址我= % x值= % d \ n ", a, *一个); |
printf("地址j = % x值j = % d \ n”, b, * b); |
printf("地址k = % x值k = % d \ n”, c, c *); |
getch (); |
} |
如果我们把上面的例子在数学形式如下:我们需要一个映射 |
T: SX |
S = {j = 20,我= 10 k = 30} |
X = {a, b, c} |
T (i) = =我; |
T (j) = b = j; |
和T (k) = c =大部分;上面的映射是一对一的,到也。 |
属性内存指针变量组织: |
(我)然后当我们使用变量在程序编译器保持一些内存变量根据数据类型。 |
(2)给该变量的地址是独一无二的变量名。 |
(3)当程序执行开始的变量名称自动翻译成相应的地址。 |
现在,记住上面的属性,如果我们定义映射 |
T: S - > X, T (v) = v的年代和X是一个单射映射。在哪里 |
S = {v数据:包含变量的值} |
X ={数据:包含变量的地址} |
现在我们必须检查是否映射T是单射或满射: |
映射T是内射,因为不同的值的变量有唯一的地址的变量。 |
每个地址的映射T不是满射,因为并没有退出一些价值领域,T (i) = j。 |
注意:由于T可能是也可能不是满射的函数。因此逆T的不退出。因此从变量的地址我们不能得到变量的值。 |
注:T (x + y) = (x) + T (y)和T (cx) = cT (x)不持有总是因为T不是满射,因此不是双射。所以 |
答:两个指针和乘以一个常数应该避免。 |
b。我们不能使用文字的地址操作符来访问地址 |
c。(a + b)的输出在编程过程中只是文字,所以我们不能使用地址运算符& (a + b)。 |
以下结果并不因为上面的映射:可以执行不同的算术运算等指针增量、减量,但仍有一些不能进行算术运算,C。 |
添加两个地址是无效的。 |
b。将两个地址不是有效的。 |
两个地址不是有效的分工。 |
d。模操作指针是无效的。 |
e。位,或异或操作指针(s)是无效的。 |
f。没有操作或否定操作指针是不可能的。 |
现在以编程方式将讨论上面的点: |
1。已有房内的两个指针: |
# include < stdio . h > |
int main () |
{ |
int var = 10; |
int * ptr =我; |
int * ptr2 = (int *) 2000; |
printf („% d”, ptr1 + ptr2); |
返回0; |
} |
输出: |
编译错误 |
2。乘法的指针和一个数字: |
# include < stdio . h > |
int main () |
{ |
int var = 10; |
int * ptr =我;int * ptr2 = (int *) 2000; |
printf („% d”, ptr1 * var); |
返回0; |
} |
减法操作指针: |
减法属性等指针如何?上面定义的映射是一个单射映射。所以近等距法则与小举行两组之间的变化公式由于变量的大小。 |
ptr2-ptr1是通过以下公式计算;最终结果= (ptr2-ptr1) /数据类型的大小 |
指针的指针: |
一个指向变量的指针变量,存储特定类型的另一个变量的地址。指针的指针是一个变量,存储地址的特定类型的指针变量。T之间的映射:X¯Y是由 |
T(和)= &(和)。 |
X ={数据:一个变量的值,和相应的地址变量}Y ={和数据:&一个变量的地址}例子吗 |
例子:编写一个程序来显示指针指向另一指针: |
指针数组:之间的映射定义两个集合S = {n[我]:}和X ={}的[我]:叫做指向数组的指针 |
T (n[我])= n[我] |
=(我) |
相当于映射T: SX |
T (* (pt + i)) = pt +我的= 0,1,2,…………, |
如果我们把一组S = {* (pt + i): pt是指针变量 |
我= 0,1,2,……,m} |
X = {(pt + i): pt是指针变量= 0,1,2,……,m} |
例子:假设我们声明一个数组x如下: |
Int x [5] = {1, 2, 3, 4, 5}; |
假设x是1000的基地址,假设每个整数都需要两个字节,这五个元素将存储如下: |
这个名字x被定义为一个常数指针指向第一个元素,x[0],因此x的值是1000,x[0]是存储的位置。也就是说,x = x [0] = 1000 |
如果我们以一个整数的指针声明pt,那么我们可以使pt指向数组的指针x通过以下任务:pt = x; |
这相当于pt = x [0]; |
现在,我们可以访问每一个使用pt + + x的值从一个元素移动到另一个,pt和x之间的关系表现为: |
指针数组:数组的指针是特定位置的集合可以得到进一步的内存地址的位置。例如:int * [4], * b [5];这里* [0],* [1],[2]*,* [3],* b [0], * b [1], [2] * b, b * b[3], *[4]中的不同位置记忆从我们可以储备更多的内存地址。数组的每个元素都是指针。 |
结构:一般的语法结构标记 |
结构体标记{ |
member1中; |
member2; |
………………。 |
………………。 |
成员n; |
}var1, var2 var3,…………var n; |
结构标签= {member1, member2、member3 member4…………。,n} |
= {(member1、member2 member3………………,成员)Data1xData2x……………xData n:每个成员访问变量vi访问给定的主要()函数的形式vi.memberj或vi - >成员或vi。memberj j = 1,2,……。n = 1, 2,………}。 |
结构在结构:如果S1 S2的子集,那么对于每个xS1 = > xS2。使用这个属性我们可以准备structrure的概念结构。 |
结构标签1 = {(member1 member2,…………。成员n} |
结构标签2 = {}{Struct标签,membern + 1, n + 2,……………,成员p} |
= {member1, member2 member3,…………………,member n,member n+1,member n+2,………..member p} |
数组的结构: |
一个数组中的所有数据项具有相同的名称。数组成员一对一对应的正整数集包括零。因为数组包含有限数目的条件。因此他们接入。的阵图的数学方法: |
变量[1]=值1变量[2]= 2………………………。变量[n] = n的值 |
结构体[1]= {member1 member2, member3, member4,………。,n} |
结构[2]= {{member1、member2 member3, member4,………。,n} |
结构[3]= {member1、member2 member3, member4,………。,n} |
结构[4]= {member1、member2 member3, member4,………。,n} |
……………………………………………………………… |
……………………………………………………………… |
结构[n] = {member1、member2 member3, member4,………。,n} |
指向结构的指针,指针指向的一般语法结构可以作为follws:一个例子 |
struct emp { |
……………。 |
……………… |
}e1, * ptr_emp; |
ptr_emp = e1; |
现在我们考虑一个映射T: SA¯一套S是一个结构和一个设置包含地址的变量。如果我们以数学方式使用指针的定义如上定义是: |
T(成员)=成员=一个成员和一个a。但在我们访问成员的指针结构在以下方式: |
T(成员)= & (* pointer.member) |
或 |
T(成员)= & (pointerA¯成员) |
这个结果可以显示在这个例子如下:结构体名称{ |
成员1; |
member2; |
…………。 |
…………… |
}; |
- - - - - - - - - - - - - - - - - - - - - - -内部函数 |
结构体* ptr名称; |
这里创建结构体类型的指针变量名结构成员通过指针可以用在两个方面。一个引用指向另一个地址访问内存。 |
b。使用动态内存分配。 |
例如:考虑一个例子来访问structureA¢s成员通过指针: |
# include < stdio . h > |
结构体名称{ |
int; |
浮动b; |
} |
int main () |
{ |
结构体名称* ptr, p; |
ptr =代替;/ *引用指针指向的内存地址p * / |
printf("输入整数:"); |
scanf („% d”, & (* ptr)。); |
printf("输入数:"); |
scanf (“% f”, & (* ptr)。b); |
printf("显示:"); |
printf (" % d % f”(* ptr)。(* ptr)。b); |
返回0; |
} |
在本例中,类型结构体的指针变量名引用的地址p区间只有通过指针结构成员可以访问。 |
结构指针成员可以使用- >操作符访问。 |
(* ptr)。与ptr - > |
(* ptr)。b是一样ptr - > b |
通过指针访问结构成员使用动态内存分配:使用指针访问结构成员,可以动态地分配内存使用malloc()函数定义在“stdlib。h”头文件。 |
使用malloc()的语法是: |
ptr = (cast_type *) malloc (byte_size) |
例子使用StructureA¢s成员通过指针使用malloc()函数: |
# include < stdio . h > |
# include < stdlib.h > |
结构体名称{ |
2.8:指针内结构: |
(我)结构可能包含成员的指针变量。 |
(2)用于存储地址的内存位置的指针 |
(3)他们可以强制转换„*¢算子。 |
上述案例为指针在结构定义如下 |
结构标签= {member1, member2、member3 member4…………。,n} |
= {(member1、member2 member3………………,成员) |
Data1 x Data2 x……………x数据n:指针访问成员变量的值六世访问给定的主要()函数的形式vi.member j或vi - >成员或* vi。memberj或* vi - >成员j j = 1, 2,……。n = 1, 2,………}。 |
例子: |
# include < stdio . h > |
结构体的学生 |
{ |
int * ptr;/ *存储地址的整数变量* / char *名称;/ *存储地址的字符串* / |
}s1; |
int main () |
{ |
int滚= 20; |
s1.ptr =辊; |
s1.name = " aayush”; |
printf (" \ n卷数量的学生:% d”, * s1.ptr); |
printf (" \ n名学生:% s”, s1.name); |
} |
工会:工会的一般语法标记 |
联盟标记{ |
member1中; |
member2; |
………………。 |
………………。 |
成员n; |
}var1, var2 var3,…………var m; |
工会标签= {member1, member2、member3 member4…………。,n} |
= {(member1、member2 member3………………,成员)Data1xData2x……………xData n:每个成员访问变量vi访问给定的主要()函数的形式vi.memberj或vi - >成员或vi。成员j j = 1, 2,……。我和n = 1、2、3………。m} |
注意:工会是用于应用程序涉及多个成员的值只需要使用一个成员。 |
关系运算符:= =、<、>、< =、> =、!=是遵循由于实数的性质:(i)代数性质 |
(2)命令的属性 |
(3)密度特性 |
(iv)完整性属性 |
(v) Archimedian属性 |
逻辑运算符:属性的逻辑操作符& &,| |,!由于布尔代数。 |
2.12。gotoxy()函数 |
gotoxy() ={(行)上校NxN:有一些属性变量的位置}这里N是自然数的集合。 |
结论和未来的范围 |
本文作者研究了一些重要的c语言的语句可以验证或与各种数学模型或功能。本文作者表明指针,结构可以与不同的简单的数学描述。本文中使用的语言是c语言。类似的概念可以应用于面向对象语言或任何脚本语言。本文作者主要集中在c语言的语句,数据类型、存储分配,指针,结构。类似的数学分析可能为任何其他高级语言做了专门面向对象语言(如Java、c#等。 |
引用 |
|