c语言指针的基本概念
关于指针的基本概念,我就不详细介绍了,因为有许多书都介绍的很详细。这里我只介绍一部分。指针指向一个地址,而指针本身在大多数系统上都是一个无符号整数(在32bit机上是4byte,在64bit机上是8byte)。
下面用一个例子来说明其机制:
在上面的例子中,先定义了一个指针p,它的类型是int,也就是说它只能指向一个int型的变量,而不能指向其他类型的变量。最后我们将a变量的地址赋给p。在这个过程中,涉及到两个内存块,一个是存放指针p的内存(用&p可得到内存地址),一个是存放a的值的内存块(用&a可以得到内存地址)。而第一个内存存的p的值经过赋值语句后也就是&a的值了。另外一个注意点是, *(星号)和变量类型以及变量名之间可以有任意个空格,也可以没有。比如下面三种方式都是一样的:
int a = 10;
int *p; /pic/p>
p = &a; /pic/p>
在上面的例子中,先定义了一个指针p,它的类型是int,也就是说它只能指向一个int型的变量,而不能指向其他类型的变量。最后我们将a变量的地址赋给p。在这个过程中,涉及到两个内存块,一个是存放指针p的内存(用&p可得到内存地址),一个是存放a的值的内存块(用&a可以得到内存地址)。而第一个内存存的p的值经过赋值语句后也就是&a的值了。另外一个注意点是, *(星号)和变量类型以及变量名之间可以有任意个空格,也可以没有。比如下面三种方式都是一样的:
int* a;
int * a;
int *a;
解读方法:
首先从标示符开始阅读,然后往右读,每遇到圆括号的右半边就调转阅读方向。重复这个过程直到整个声明解析完毕。需要注意的是,已经读过的部分在后续作为一个整体来看。
看下面一个例子:
int *a[3];
/pic/p>
/pic/p>
int (*a)[3]
/pic/p>
/pic/p>
/pic/p>
/pic/p>
int (*func)(int p);
/pic/p>
/pic/p>
/pic/p>
int (*func[3])(int p);
/pic/p>
/pic/p>
/pic/p>
【c语言指针的基本概念】相关文章:
C语言的指针12-21
C语言指针的传递03-17
C语言指针的总结08-21
C语言指针的概念02-25
对C语言指针的总结12-09
C语言指针教学02-10
C语言指针的用法11-15
什么是C语言中指针 C语言指针的基础使用09-23
C语言指针用法详解10-02