C语言进阶课程学习记录-数组指针和指针数组分析
- 实验-数组指针的大小
- 实验-指针数组
- 小结
本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程,图片全部来源于课程PPT,仅用于个人学习记录
实验-数组指针的大小
#include <stdio.h>typedef int(AINT5)[5];
typedef float(AFLOAT10)[10];
typedef char(ACHAR9)[9];int main()
{AINT5 a1;float fArray[10];AFLOAT10* pf = &fArray;ACHAR9 cArray;char(*pc)[9] = &cArray;char(*pcw)[4] = cArray;int i = 0;printf("%d, %d\n", sizeof(AINT5), sizeof(a1));//20 20for(i=0; i<10; i++){(*pf)[i] = i;}for(i=0; i<10; i++){printf("%f\n", fArray[i]);}//0~9printf("%p, %p, %p\n", &cArray, pc+1, pcw+1);// pc+9 pcw+4return 0;
}/*output:
20, 20
0.000000
1.000000
2.000000
3.000000
4.000000
5.000000
6.000000
7.000000
8.000000
9.000000
0060FEAB, 0060FEB4, 0060FEAF*/
实验-指针数组
#include <stdio.h>
#include <string.h>#define DIM(a) (sizeof(a)/sizeof(*a))int lookup_keyword(const char* key, const char* table[], const int size)
{int ret = -1;int i = 0;for(i=0; i<size; i++){if( strcmp(key, table[i]) == 0 ){ret = i;break;}}return ret;
}int main()
{const char* keyword[] = {"do","for","if","register","return","switch","while","case","static"};printf("%d\n", lookup_keyword("return", keyword, DIM(keyword)));printf("%d\n", lookup_keyword("main", keyword, DIM(keyword)));return 0;
}/*output:
4
-1*/
小结
数组的类型由元素类型和数组大小共同决定
数组指针是一个指针,指向对应类型的数组
指针数组是一个数组,其中每个元素都为指针
数组指针遵循指针运算法则
指针数组拥有C语言数组的各种特性