指针数组:C语言中灵魂数组和指针的互操作



  我们般都认为数据存储结构 2位或者说矩阵都可以看作是多个组合结构定义在其上数据存储访问方式是所以是其中最基础最重要部分只有理解了此类数据结构本质才能触类旁通了

  (.gif' />)是若干同类变量聚合允许通过统名字饮用其中变量所以也就是个同类型数据有限集合可以通过下表来访问/些元素

  在C语言中都由连续内存区域构成(有时候定是这样)最低地址对应首元素下标是从0开始所以首元素也就是下标为0元素最高地址对应最末元素即第N-1个元素(如果我们定义为N元)

  定义方式:

  在C语言中允许在声明时候同时对其进行也可以把声明和定义放在区别位置类似于如下表达式:

type_specier .gif' />_name[size1]...[sizeN] = {value_list};

  其中vlaue_list是由逗号()分隔常量表常量表必须和type_specier兼容最后由分号和下个语句分隔由此可见定义方式为:

type_specier

.gif' />_name[size] = {value_list};

如下:

char hello[12] = {’H’,’e’,’l’,’l’,’o’,’,’

,’ ’,’w’,’o’,’r’,’l’,’d’,’\\0’};

  注意:\"’\\0’\"收尾这是C标准部分在操作时候是以’\\0’作为结束判断标志当然了如果你定义串那就不用加这个’\\0’了有机制帮助你自动添加

  上面例子生命方式为: hello = \"Hello, world\";(当然了具体实现中你必须把\".h\"头文件加入到你文件中)或者你也可以这样来声明:



  char *hello = \"Hello, world\";或者char hello = \"Hello, world\";

  切换为指针其效果是);时候还可 以不标明最大小

  char hello = {’H’,’e’,’l’,’l’,’o’

,’,’,’ ’,’w’,’o’,’r’,’l’,’d’,’

\\0’};

  这时候编译器会根据后边赋值情况为分配合适内存空间这个你不用担忧除非机器正处于内存缺状态

  元素访问:

  可以利用循环结构来挨个访问元素比如:

[...]

i;

char hello[12] = {’H’,’e’,’l’,’l’,’o’,’

,’,’ ’,’w’,’o’,’r’,’l’,’d’,’\\0’};

[...]

for(i = 0; i < 12; i){

prf(\"%c\",hello[i]);

}

prf(\"\\n\");

[...]

  其中有点必须注意了那就是i值不能取到12我们下标识从0开始即hello[0]是第个元素下界而hello[12]是第个空元素上界

  其实元素个数等于定义时下标也等于上界(12)减去下界(0)得到数值还等于上界地址减去下界地址模(tyep_specier)值(假设空间是连续分布如果不是这样那么这种思路方法也就不成立了)

Tags:  二维数组指针 指向数组的指针 函数指针数组 指针数组

延伸阅读

最新评论

发表评论