1.下面程序的错误?
char *strA()
{
char str[] = "hello word";
//分配一个局部数组
//局部数组分配在栈中,函数结束后栈中内容就被回收,这个结果不确定且不安全
char *str = "hello word";
//分配一个全局数组
//对应内存中的全局区域(静态存储区) 函数结束时不会被回收
static char str[] = "hello word";
//通过static关键字声明,数组被分配在了全局区域,开辟了一段静态存储空间
return str;
}
2. 下面程序的运行结果?
<pre name="code" class="cpp">int _tmain(int argc, _TCHAR* argv[])
{
int a[3];
a[0] = 0, a[1] = 1, a[2] = 2;
int *p, *q;
p = a;
cout << p << '\n';//address
cout << *p << '\n';//0
q = &a[2];
cout << q << '\n';//address
cout << *q << '\n';//2
cout << a[q - p] << '\n';//q的地址减去p的地址,再除以sizeof(int),也就是2,a[2]
cout << a[*q - *p] << '\n';//q的内容减去p的内容,还是2, a[2]
return 0;
}