一、知识点。
1、数组——一维以及多维数组的命名,初始化以及在函数参数传递中的一些问题。
2、指针——其定义,用途以及指针相关的八种操作。
3、一些关键字。
二、细化知识点。
数组相关
1、命名要有数组自身的数据类型说明,例如int, float等;这不是数组中所含数据的类型,而是其本身的类型。
2、命名时要说明维度
3、作为参数在函数传递过程中的作用稍后补充。
指针相关
1、指针定义——是一种地址,命名时也要说明其数据类型,注意的是其本身也有地址,可以想象成一个带有编号的盒子藏有另外一个编号用以寻找下一个地点或者其内容。
2、地址补充——相关可以看一看计算机体系结构的书。计算机中存储数据的最小单元是是位,也就是比特,存放0或者1.为了扩大存储类别,计算机还有存储单位,例如字节——一个字节含有八个比特(一般的计算机内定),每一的字节计算机都会给其一个地址。更大的存储单位是字,一个字含有多少个字节这倒是没有明确的定义——但值得注意的是,字也有地址,但无论一个字含有多少个字节,它都只有一个地址,这个地址要么是最左边字节的,要么是最右边字节的。(参考c与指针英文版第130页)
3、指针的八种操作
赋值——地址,即相当于分配门牌号
解引用——即相当于根据门牌号找到里面的美女或者宝藏。
取地址——找到你想要约见的那个放美女门牌号的地方
指针与整数相加,相减——相当于你找错地方,去了美女隔壁,找到隔壁老王
递增递减符号——也是去了隔壁的操作,但是注意递加递减符号的位置,这是有区别的(清楚的可以看看c与指针的140页以及以后)
指针求差以及比较——这个现在还没有遇见,不敢妄言
三、函数,指针,数组之间的关系
数组在原型函数中作形式参数时,一维数组定义(仅仅是在定义中)有四种表示方法(详见书的第291页);二维数组定义则有四种。
数组在函数调用时做实际参数时,就已经有了明确的结果了——即是明确的数据。
四、最后,贴一下我做第十章第十四题的答案以及相关的收获。
include <stdio.h>
int sum_array(int ar[][5], int num1);
int sum_all(int ar[][5], int num2, int num22);
int biggeat(int ar[][5],int num3, int num33);
int print(void);
int main(void)
{
int sizes = 5;
int ar1[sizes];
int ar2[sizes];
int ar3[sizes];
int ar[3][5];
int i,j;
for (i = 0; i < 5; i++)
{
scanf("%d",&ar1[i]);}
for (i = 0; i < 5; i++)
{
scanf("%d", &ar2[i]);
}
for (i = 0; i < 5; i++)
{
scanf("%d", &ar3[i]);
}
for (i = 0; i < 3; i++)
for (j = 0; j < 5; j++)
{
if ( i == 0)
{
ar[i][j] = ar1[j];
}
else if ( i == 1)
{
ar[i][j] = ar2[j];
}
else if( i == 2)
{
ar[i][j] = ar3[j];
}
}
for (i = 0; i < 3; i++)
{
sum_array(ar, i);
}
sum_all(ar,3,5);
biggeat(ar,3,5);
}
int sum_array(int ar[][5], int num1)
{
int total = 0;
int j;
for (j = 0; j < 5; j++)
{
total += ar[num1][j];
}
printf("The %d array sum of it is %d.\n", num1 + 1, total);
}
int sum_all(int ar[][5],int num2,int num22)
{
int i,j;
int total;
for (i = 0; i < 3; i++)
for (j = 0; j < 5; j++)
total += ar[i][j];
printf("The all numbers of sum is %d.\n", total);
}
自己在函数形式参数以及实际参数之间卡住了很久,希望各位小伙伴不要重蹈覆辙,一定打好基础。