黑马程序员技术交流社区
标题:
C 字符串
[打印本页]
作者:
粘糊浆
时间:
2015-3-11 19:11
标题:
C 字符串
本帖最后由 粘糊浆 于 2015-3-11 19:14 编辑
#include <stdio.h>
#include <string.h>
int main()
{
char c[4] = {'a','b','c','\0'};
// char a ='5';
char c1[] = "agbadf";
int length= strlen(c1);
printf("%p--- %d %p",&c1[9],length,&c[2]);
}
为什么输出的地址是一样的 是在CODE :: blocks里运行的。
作者:
粘糊浆
时间:
2015-3-11 19:14
是在CODE :: blocks里运行的。
作者:
passchaos
时间:
2015-3-11 20:14
这两个数组都是分配在内存的栈区的,因此实际上是从高地址到低地址分配的。C语言中不会检查数组是否越界,因此&c1[9]就是从数组开始第十个存储单元,c1数组总共有7个元素,每个元素占一个字节,刚好&c1[9]就是c1数组的地址加9,数组c在数组c1之后紧挨,刚好就是&c[2]。
作者:
粘糊浆
时间:
2015-3-11 20:19
原来 是这样,那OC会检查不?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2