1.有个不成文的规定:
由基本数据类型所声明的变量,称为变量。
由抽象数据类型(类)所声明的变量,称为对象。
2.给数组指针分配空间malloc的问题.
对于二重指针是分两步,比如: float **Cluster=(float **)malloc(sizeof(float *)*K) for(i=0;i<K;i++) Cluster[i]=(float *)malloc(sizeof(float)*N);
你需要分两步做,第一次分配K个指针类型的空间来存放指针,然后再循环分配除这K个指针指向的数租
int (* p)[12];这是数组指针,指针的类型为(*)[12],即指针指向的类型为12个元素的整形数组。 p = (int*) malloc(12*sizeof(int));这里说明p的类型为一个整型 int *。 显然类型不匹配! int (* p)[12]; p = (int (*)[12]) malloc(12*sizeof(int)); char (* p)[2][3]; p = (char (*)[2][3]) malloc(6*sizeof(char)); char (* p)[][3]; p = (char (*)[][3]) malloc(6*sizeof(char));高维不可省略 对于二重指针是分两步,比如: float **Cluster=(float **)malloc(sizeof(float *)*K) for(i=0;i<K;i++) Cluster[i]=(float *)malloc(sizeof(float)*N);
///
理想的接口应是简单明确的,对象才容易更换。欲得到单纯的接口,最常见的方法是让对象所包装的细节部分具有高度紧密的相关性,也就是所谓的“凝聚性”;创造凝聚性有以下两种途径:
1)以函数为中心,将常相互调用的有关函数结合起来,构成较独立的单元,统称为模块(Module)。而不考虑数据的角色。
2)以数据为中心,将直接处理到该数据的各有关函数结合起来,成为独立的单元,统称为对象(Object)
对象将数据及有关函数包装起来,但允许对象内的函数能调用其他对象内的函数。第二种方法成为面向对象(Object-Oriented)方法。简而言之,对象的内部细节就包含两部分:
1)数据成员;统称为对象的数据属性(Attribute)
2)成员函数 ;用来直接处理的程序,统称为对象的方法(Method)。
//
在OOP程序中,通常由下述两项定义来叙述对象:
1)类定义。叙述对象内部含有哪些数据成员,以及含哪些有关的函数。
2)接口定义。叙述对象内部的函数中,有哪些是允许别的对象经由此接口而调用的。如何让别的对象知道与此对象沟通。
///
在开发软件时,不仅需要描述对象的属性和行为,而且必须描述对象之间的沟通及其结构面的链接关系。这种连接关系包括组合(composition)和结合(association)关系等。