当前位置:编程学习 > C/C++ >>

〖请教〗高等数学及C语言的学习心得

〖请教〗高等数学及C语言的学习心得

〖详细一点,别三言两句,也别过多缭乱〗

答案:(一) 学习一门语言,就是要按照它的语法来编程。要编程,当然就要上机操作来验证你程序的正确性。所以上机非常重要,通过Compile(Ctrl+F7),Build(F7),Execute program(Ctrl+F5)等步骤来执行你所写的程序,完成你所写程序的目标,最终达到你的目的。而且通过执行程序,你会发现程序中的错误,从而使你了解你所学知识中的不足,同时,要学会根据编译时提示的错误来改正程序中发生的错误,以便下次不会再犯同样的错误。。 

  (二) C语言的语法部分。这部分内容是学好C语言的基础,只有学好了这些语法,才会写程序,看程序。所以对一个初学者来说,这部分内容还是挺重要的,所以要扎实地熟悉每一个语法,并能根据这些语法来编程。但如果有学过C语言,或是以前有学过其他语言,那么学习这部分应该没有很大问题。 所以在此就不多说了。

  (三) 现在就让我来说说学习C语言的重点,难点,以及易出错的地方。当然,这只是针对我个人而言。在C语言学习过程,重点就是数组,指针,以及结构体了。难点当然也是它们了,不过数组和结构体还是蛮简单,所以在此主要就指针方面谈谈自己的看法。

指针:(C语言中的精华)

  1 概念指针其实就是一个变量的地址。都知道如果在程序中定义了一个变量,那么在对程序进行编译时,系统就会给这个变量分配内存单元。这个内存单元就是这个变量的地址。刚已说过,指针其实就是一个变量的地址。则指针其实就是通过这个地址指向这个变量。也就是说,指针是一个地址,而指针变量是存放地址的变量。

  2 定义定义一个指针变量:基类型 *指针变量名;如float *p1; //p1是指向float型变量的指针变量注意:p1只能指向float型的,不能指向int 或char型。 int a ; float *p1; p1=&a; //是不行的。

  3 指针的作用(指针变量作为函数参数)现来比较一下下面两个程序: //此程序是正确的。可以达到交换两个数的目的。swap(int *p1,int *p2)其实是交换两个变量(a和b)的值。所以可以达到目的。 #include <stdio.h> swap(int *p1,int *p2) {int temp; temp=*p1; *p1=*p2; *p2=temp; } void main() { int a,b; int *pointer_1,*pointer_2; scanf("%d,%d",&a,&b); pointer_1=&a;pointer_2=&b; if(a<b) swap(pointer_1,pointer_2); printf("\n%d,%d\n",a,b); } //而这个程序没有达到交换的目的。因为改变指针形参的值并不能使指针实参的值改变。 #include <stdio.h> swap(int *p1,int *p2) {int *p; p=p1; p1=p2; p2=p; } void main() { int a,b; int *pointer_1,*pointer_2; scanf("%d,%d",&a,&b); pointer_1=&a;pointer_2=&b; if(a<b) swap(pointer_1,pointer_2); printf("\n%d,%d\n",*pointer_1,*pointer_2); } 应特别注意:不能企图通过改变指针形参的值而使指针实参的值改变。

  4 引用一个数组元素,可以用下标法,也可以用指针法如 int a[10]; int *p; p=a; 则要输出该数组第i 个元素,用*(a+i)、*(p+i)、a[i]都可以。

  5 归纳:如果有一个实参数组,要想在函数中改变此数组中的元素的值,实参与形参的对应关系有4种情况: ①形参和实参都用数组名 ②实参用数组名,形参用指针变量 ③实参形参都用指针变量 ④实参为指针变量,形参为数组名

  6 多维数组C语言允许把一个二维数组分解为多个一维数组来处理。现通过一个详细的例子来说明。

  int a[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}} //则数组a可分解为三个一维数组,即a[0],a[1],a[2]。每一个一维数组又含有四个元素。如a[0]数组,含有a[0][0],a[0][1],a[0][2],a[0][3]四个元素。假设数组a 的首地址是1000.则数组及数组元素的地址表示如下:从二维数组的角度来看,a是二维数组名,a代表整个二维数组的首地址,也是二维数组0行的首地址,等于1000。a+1代表第一行的首地址,等于1008。 a[0]是第一个一维数组的数组名和首地址,因此也为1000。*(a+0)或*a是与a[0]等效的,它表示一维数组a[0]0 号元素的首地址,也为1000。&a[0][0]是二维数组a的0行0列元素首地址,同样是1000。因此,a,a[0],*(a+0),*a,&a[0][0]是相等的。同理,a+1是二维数组1行的首地址,等于1008。a[1]是第二个一维数组的数组名和首地址,因此也为1008。&a[1][0]是二维数组a的1行0列元素地址,也是1008。因此a+1,a[1],*(a+1),&a[1][0]是等同的。由此可得出:a+i,a[i],*(a+i),&a[i][0]是等同的。此外,&a[i]和a[i]也是等同的。因为在二维数组中不能把&a[i]理解为元素a[i]的地址,不存在元素a[i]。C语言规定,它是一种地址计算方法,表示数组a第i行首地址。由此,我们得出:a[i],&a[i],*(a+i)和a+i也都是等同的。另外,a[0]也可以看成是a[0]+0,是一维数组a[0]的0号元素的首地址,而a[0]+1则是a[0]的1号元素首地址,由此可得出a[i]+j则是一维数组a[i]的j号元素首地址,它等于&a[i][j]。由a[i]=*(a+i)得a[i]+j=*(a+i)+j。由于*(a+i)+j是二维数组a的i行j列元素的首地址,所以,该元素的值等于*(*(a+i)+j)。应特别注意它们之间的区别,理解到底是代表地址还是数值。

学习高等数学的要点总结如下:通俗的说就是一个对象,一个概念,一个方法,一个运算,一个区别,一个联系。也就是我要说的所谓的“六个一”!
对象指的是高等数学的研究对象,已经不再是一些简单的数了,而是向量,矩阵。
概念指的是空间的概念,这是一种特殊的集合。是研究对象和运算的结合体。
方法指的是化难为简的方法,它贯穿于整个高等数学的始终,是好多研究手段的出发点。
运算指的是极限运算,它是一种哲学思想的具体化,是高等数学区别于初等数学的主要标志。
区别指的是离散和连续的区别,这也是后来计算机科学发展的基石。
联系指的是高等数学中广泛存在的联系,只有把其中的各个分支都联系起来才能真正的学好高等数学,它们确实是一个不可分割的整体。

上一个:6进制转化成10进制的c语言程序
下一个:关于C语言数据结构中的图的一些问题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,