山东临沂市需要建设网站的公司,郑州网络营销推广公司信息,wordpress发布文章404,wordpress博客地址数组指针与指针数是非常重要的概念。面试中也是经常会被问到的 文章目录1 数组的类型1.1 定义数组的类型2 数组指针2.1 数组类型和数组指针的代码分析3 指针数组3.1 指针数组代码案例分析4 总结1 数组的类型
C语言中的数组有自己特定的类型。比如 int a[5]#xff1b;
数组a… 数组指针与指针数是非常重要的概念。面试中也是经常会被问到的 文章目录1 数组的类型1.1 定义数组的类型2 数组指针2.1 数组类型和数组指针的代码分析3 指针数组3.1 指针数组代码案例分析4 总结 1 数组的类型
C语言中的数组有自己特定的类型。比如 int a[5]
数组a的类型是 int[5]并不是 int类型。
数组类型是由元素类型和数组大小共同决定的
1.1 定义数组的类型
在C语言中可以通过typedef 为数组的类型重命名。如下 数组的类型 数组的定义 这种写法可能有的人没见过等看过后面的数组指针与指针数的定义的时候就知道了。 2 数组指针
数组指针是一个指针不是数组。这个指针指向一个数组。该指针需要使用取地址符 向数组取地址。数组的整个地址而非数组元素首地址可以通过数组类型来定义数组指针ArrayType* pointer;也可以直接定义type(*pointer)[n];
注意上面的pointer为数组指针变量ArrayType是数组的类型type是数组里面元素的类型。注意区分三者的不同。
2.1 数组类型和数组指针的代码分析
分析下面的代码32-1.c
#include stdio.h/* 定义数组类型 */
typedef int(AINT5)[5];
typedef float(AFLOAT10)[10];
typedef char(ACHAR9)[9];int main(){AINT5 a1; //int a1[5];float fArray[10];AFLOAT10* pf fArray; //注意与float* pf fArray 区分ACHAR9 cArray;char(*pc)[9] cArray;int i 0;printf(%d, %d\n, sizeof(AINT5), sizeof(a1));for(i0; i10; i){(*pf)[i] i; //注意数组指针的用法}for(i0; i10; i){printf(%f\n, fArray[i]);}printf(%p, %p\n, cArray, pc1); //pc是整个数组的指针pc1 》cArray 9return 0;
}编译运行上述代码
分析
注意学习上面定义数组类型的方法并使用定义的数组类型来定义数组。注意数组指针的声明与使用方法数组指针是整个数组的地址需要使用 号来获取代码比较简单不多做分析
3 指针数组
指针数组是一个数组不是指针。该数组存的元素是指针。指针数组的定义 type* pArray[n]
其中 type* 是数组中存的元素的类型pArray 是数组名。如下图的指针数组 3.1 指针数组代码案例分析
代码32-2.c
#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 i0;for(i0; isize; i){if(strcmp(key, table[i]) 0){break;}}return isize?-1:i;
}
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;
}编译运行结果为
4 -1
分析
lookup_keyword这个函数是查找字符串数组中是否存在某一个字符串table数组就是一个指针数组里面存的是指针。字符串是一种常量指针注意学会使用指针数组的使用。
4 总结
数组也是有类型的由数组的大小和元素的类型共同决定的数组指针是一个指针该指针指向对应类型的数组指针数组是一个数组该数组中存的元素是对应类型的指针指针数组的使用与数组是一样的。但是注意指针数组在使用的时候是如何表示的。