C-指针数组与数组指针
来源:互联网 发布:淘宝摄影发展趋势 编辑:程序博客网 时间:2024/04/28 18:21
C-指针数组与数组指针
说实话, C语言真的很让人蛋疼, 它不像面向对象的语言, 我们重心在设计程序上。
而使用C语言, 你不仅要考虑程序的设计, 你还要考虑很多他的使用细节,不然一不小心你怎么死的都不知道。
但是,个人感觉,C语言的魅力是其他任何语言都比不了的!!!, 继续看。。。
- 基本点
- 数组类型
- C语言中数组有自己特定的类型
- 数组的类型有元素类型和数组大小共同定义, 例如 int arr[5]; 对应的数组类型为 int[5]
- 定义数组类型 : typedef type(name)[size], 例如
- typedef int(AINT5)[5] -> AINT5 iArray; //定义了一个数组 int iArray[5];
- typedef float(AFLOAT10)[10]
- 数组指针
- 数组指针用于指向一个数组
- 通过&作用于数组名,我们就可以得到数组的地址
- 可以通过数组类型来定义数组指针 AINT5* pa; //pa是一个指向 int[5] 的指针
- 当然也可以间接定义数组指针 -> int (*p)[5]; //p为指向数组类型为int[5]的指针
- 范例:
- 数组类型
typedef int(AINT5)[5]; typedef float(AFLOAT10)[10]; int main() { float fArray[10]; int a[5] = {0}; int (*a2)[5] = &a; AINT5* a1 = a2; AFLOAT10* pf = &fArray; printf("%d, %d\n", sizeof(AINT5), sizeof(a)); int i = 0; for(i=0; i<10; i++) { (*pf)[i] = i; // fArray[i] = i; printf("%f\n", fArray[i]); }
- 指针数组 - 指针数组是一个普通的数组 - 指针数组中的每一元素为指针 - 指针数组的定义为 type* pArray[n];
main函数的参数
- main函数的参数可以理解为操作系统调用的函数
- 在执行程序的时候可以向main函数传递参数
- 范例: int main(int argc, char* argv[], char* env[])
- argc: 命令行参数的个数, 包括命令本身
- argv: 命令行参数指针数组
- env: 环境变量的指针数组 -
指向指针的指针
- 指针变量在内存中会占用一定的内存空间(4 or 8)
- 可以定义一个指针来保存指针变量的地址值(二级指针)
- 二级指针存在的原因是
- 指针本身是变量,对于指针当然也存在传值调用和传址调用
- 二维数组与二级指针
- 二维数组在内存中以一维方式排布
- 二维数组的第一维是一维数组, 二维数组的第二维才是具体值
- 二维数组的数组名同样可以看做指针常量, 还是首元素的地址,例如 &a[0][0] == a
二维数组参数
- 前面已经说过,C语言中的数组参数会退化为指针
- 二维数组参数同样会退化,退化为数组指针
- void g(int a[3][3], int len) -> void g(int a[][3], int len) -> void g(int (*a)[3], int len)
0 0
- C数组与指针
- c 指针与数组
- C 数组与指针
- C数组与指针
- 指针与数组 C
- C指针与数组
- c数组与指针
- C-数组与指针
- C指针与数组
- c指针与数组
- C-指针与数组
- C,C++ 指针数组与数组指针
- C语言:指针数组与数组指针
- C,C++ 指针数组与数组指针
- C,C++ 指针数组与数组指针 .
- C,C++ 指针数组与数组指针
- C语言指针数组与数组指针
- C,C++ 指针数组与数组指针
- C-动态在堆上申请二维数组
- 如何在WordPress页面输出指定的调试信息
- Java迭代法求所有八皇后问题的解
- C- 函数与指针
- 九度OJ 1336:液晶屏裁剪 (GCD)
- C-指针数组与数组指针
- AsyncTask异步消息处理机制
- Linux中修改环境变量及生效方法(永久、临时)环境变量查看
- Struts2系统学习(16)OGNL表达式及基本原理分析
- hdoj 5500Reorder the Books【规律】
- Android学习之路
- C-复杂的声明的阅读
- 15、泛型
- hdu5558 Alice's Classified Message