数组指针是指向这个数组首地址的指针,指向对象是这个数组;
指针数组是存放一类指针的数组,这个数组的每个元素都是一个指针;
例子:
int a[10];
int* s;
s = a;//这里s就是一个数组指针,它的值就是数组a 的首地址;当然,如果a是一个整数,那s就是一个指向整型的指针;
int a;
int* s[5];
for(int i=0;i<5;i++)s[i]=a;
//这里s就是一个指针数组,它的每个元素都是整型变量a的地址
CPU的设计者才不管你在上面跑什么程序.他们只是按着他们的想法来设计.
而int的大小,至少在C/C++中,标准只说可以由实现者自己定义.至于要不要按机器的字长来设计那就是编译器设计者的喜好了.除非哪天标准改成int必须是机器的字长....不过C/C++标准中抽象出来的"机器",恐怕没有字长这个概念吧..
不管指针变量指向哪种类型的变量,占几个字节跟操作系统有关,操作系统如果是32位的,则指针变量占4个字节(32/4),如果是64位的则,占8个字节。 操作系统是几位的又跟硬件有关,如果处理器是32位的,操作系统最高也就32位。
指针使用前一定要初始化,而且如果一个结构体内含有指针,最好的初始化方式为
/* 栈的链式存储结构 */
typedef struct StackNode
{
struct StackNode *next;
SElemType data;
}StackNode,*LinkStackNodePtr;
typedef struct LinkStack
{
LinkStackNodePtr top;
int count;
}LinkStack ;
LinkStack ls;
SElemType e;
ls.top=NULL;