| 本帖最后由 黑暗天使 于 2020-9-6 19:55 编辑
大家好,好久没玩程序了,今天继续。今天就不写程序了,给大家讲讲知识点吧,毕竟高校都会学编程,而C语言是一切程序的基础。虽然百度上都有,不过我们这不是做开发,而是打基础。以下内容都是我自己的教案,和百度没有关系。此外,考虑到是讲课,所以每次内容不多,也不需要深入,学习最忌讳急于求成,要一步一个脚印,稳扎稳打。
今天的正题是指针和数组,数组大家比较熟悉,指针就相当重要了,它是整个C语言的精华,下面开始讲课:
指针: 表示变量的地址,在C语言中用符号&表示取地址,而定义指针用的是*号
例1 定义两个指向整型变量的指针p和q
int *p,*q; //注意: 此句不可以写成 int *p,q;
例2 定义两个指向整型变量的指针p和q,再定义两个整型变量m和n,并将p指向m的地址,将q指向n的地址
int m,n;
int *p,*q;
p=&m;
q=&n;
例3 定义一个整型指针p,定义一个一维数组a,包含10个整数,并将p指向数组中的第2个整数。
int *p;
int a[10];
p=&a[1]; //注意: 此句千万不要写错成 p=&a[2];
例4 定义一个整型指针p,定义一个三行四列的矩阵(也就是二维数组)
int *p;
int a[3][4];
这个例子为了使大家看清楚,我们画图:
a[0][0] a[0][1] a[0][2] a[0][3]
a[1][0] a[1][1] a[1][2] a[1][3]
a[2][0] a[2][1] a[2][2] a[2][3]
1)将p指向数组的第一个元素 p=&a[0][0];
2)将p指向数组的最后一个元素 p=&a[2][3]; 或者 p=a[2]+3;
3)将p指向数组的第一行 p=a[0];
此例请大家格外注意 千万不要错写成 p=&a[0]; 因为在二维数组中,a[0]并不是元素,而是地址,所以前面就再不能加&符号了。
练习题:
1 数组 a[4][2]的总共有( )个元素,第6个元素是( )
2 假设有以下程序段:
int m, n, *p, *q , *r ;
int a[10]={1,2,3,4,5,6,7,8,9,10};
m=3;
n=5;
p=&m;
q=&n;
r=&a[2];
m=m+n;
n=n-m;
最终 指针p中的内容为( ),指针q中的内容为( ),指针r中的内容为( ) //内容就是指地址中的具体值
有兴趣看完的朋友,请回复下:
A 完全没问题,有程序基础,学校有学过,算是又复习了一遍。
B 学过编程,但没学过C语言,勉强能看懂一部分,但细节上还不行。
C 不行,感觉有困难,看得糊里糊涂,要重新从最基础开始慢慢来。
| |