引言:C语言里,指针就是它的灵魂,是它能如此高效的原因,同时也是C语言学习的难点;最近在B站看完翁恺老师关于指针和数组的视频,我感觉醍醐灌顶,很多模糊难辨的细节问题有了自己的理解。这里想写下来作为总结和记录,水平有限,恳请指正。
- 一、基本概念总结
1、C指针(变量的房间号):是一个值为内存地址的变量。
- 地址运算符:&,取地址运算
int a = 1;
ptr = &a; - 地址运算符:*,取值运算符
b = *ptr;
注:&和 *为互逆运算符。
char stuName ,name;//定义字符型变量stuName,name
char *pStu ; //定义指向字符型变量的指针变量pStu
char *pNew;//定义指向字符型变量的指针变量pNew
pStu = &stuName;//取变量stuName地址赋值给指针变量pStu
pNew = pStu;//把指针变量pStu赋值该pNew
name = *pNew;//把pNew指向的内存单元的值赋给name
2、数组(存放数据的容器)
- 所有元素具有相同的数据类型;
- 一旦创建,不能改变大小;
- 数组中的元素在内存中是连续依次排列的。
数组元素本身不能被赋值(可以初始化)
如:int ar[] ={1,2,3,4,3,};//引用时下标从零开始,0–n-1;
也可以采用遍历:
for (i=0; i<length; i++){
b[i] =a [i];
}
二维数组
int a[3][5]; //l理解为一个三行五列的矩阵
初始化:
int a[3][5] = {
{
0,1,2,3,4},
{
2,3,4,5,6},
{
4,5,6,7,8},
};
或者遍历:
for(i=0; i<3;i++){