1. 指针在函数中调用malloc()分配的内存是放在数据区(堆中)而非堆栈区,所以当退出函数时,该内存依旧存在,只能通过free()释放它,而那些通过结构定义的的结构体(例如:struct msginfo buf),并且在函数体中做了初始化的,这个buf所代表的内存是放在堆栈中的,退出函数后就被释放了。
2. const 指针和指向 const的指针
(1) 指向 const的指针
例如: const int *x , 表示x是一个指针,它指向一个const int,这里不需要初始化,因为x可以指向任何东西,但它指向的东西不能被改变(也就是说x的内容不能变),int const * x与上面的定义是一样的
(2 ) const指针
例如: int d=1
int* const x=&d
这样就使该x指针变为了一个const指针,这个指针必须要有初始值,并且该指针在其寿命期间是不能改变的,但其所指向的内容可以改变,比如*x=3
3.指针和数组名的区别:
(1) 指针是个变量,它可以任意赋值,而数组名却不能赋值
(2) 对数组中内容的访问可以通过以下的方式进行:
int a[3]={4,5,6};
int I=0;
I=*(a+2)
而这样是错误的:
I=*(a++);
这是因为a++等价于a=a+1,前面说了数组名是不能赋值的a
本文转载自IT网it求职笔试真题库网。