一个指针和多维数组指针的用法的问题

C中的字符串数组指针的用法与字苻串指针的区别

从上面的截图我们可以看到字符数组指针的用法和字符串的差别。他们的类型是不同的比如上面的代码中,filename的类型是char[12]而pname的类型是char*,&filename的结果是数组指针的用法指针图中显示的是char[12]*。还可以发现对于pname和p虽然是两个不同的指针,但是他们都指向同一个地址这也是编译器投机取巧的地方,因为他们都是指向"fangzhen"这个字符串所以编译器就只存储一次。

c中多维数组指针的用法的内存分配过程

第二個int*所在位置为0x003c12e0(从下图我们可以读出)

  1. 第3个int*所在位置为0x003c1580(从下图的蓝色框内可以看出)

(1)还没有执行第一个if

现在还没有执行对*brr分配内存,所以brr处的内存昰随机的,

还没有执行第二个if 之前,没有对(*brr)[0]进行空间的分配, 内存中的数都是随机数

我们到0x处查看, 可以发现, 所分配的48个int型内存进行了初始化

到此為止, 其实内存都已经分配完毕, 现在所要做的就是为(*brr)[1]和(*brr)[2]进行赋值.

for循环执行一次之后,

我要回帖

更多关于 数组指针的用法 的文章

 

随机推荐