指针定义:变量,地址,类型(宽度)
指针其实就是一个变量,和其他类型的变量一样。它与其他变量的不同就在于它的值是一个内存地址,指向内存的某一个地方。即指针是一种存放另一个变量的地址的变量。
比如:
int i =1;
int *p=&i;
首先定义了一个整型变量i,并初始化值为1。再定义了一个整型的指针p,它的值是i的地址。因此,指针p指向了i所在的内存,该段内存占4个字节。
因此指针含义可以分为3个方面来理解:
1,它是一个变量,所以也占用一定的内存空间(在X86上占用4个字节,X64上占用8个字节)
2,它的值是一个内存地址。这个地址可以是其它变量的地址。
3,它的地址指向的内存空间具有确定的长度。这是指针与地址的本质区别。如果只告诉你一个内存地址,你不会知道从这个地址开始的内存有多长。但如果告诉你一个指针,你会明确的知道从这个内存地址开始的内存有多长。因为指针都是有类型的。知道了指针的类型,就确定了所指向的内存地址对应的长度。
指针是C语言中的精华。指针其实就是一个变量,和其他类型的变量一样。在32位机器上,它是一个占用四字节的变量,它与其他变量的不同就在于它的值是一个内存地址,指向内存的某一个地方。即指针是一种存放另一个变量的地址的变量。
int main(void)
{
int i
= 1;
int *p = &i; // 指针p指向了i的地址
*p += 1; //
*p将i的值增1
printf(“i = %d\n”, i);
return 0;
}
C语言中最复杂最容易出错的要数指针了。指针让一些初级程序员望而却步,而一些新的开发语言(如Java,C#)干脆就放弃了指针。但是,在C语言程序里,你会发现大量的C语言指针的使用。因此,从一定程度上来说,只有掌握了指针,才算真正的学会了C语言。
指针的定义方式为:
类型名 *指针名;
比如:
char *pch;
上面的语句就定义了一个名为pch的字符指针。在C语言里,根据指针的不同类型,可以把指针定义为内建型别指针和自定义结构指针。根据类型不同,会将指针指向的内存数据按照不同的类型解析。即指针如果是int类型,那么就将指针指向的内存解析为一个整型;如果指针是char类型,那么就将指针指向的内存解析为一个char类型。
指针的初始化,可以让指针指向某个变量的地址,也可以让指针指向一个由内存分配函数分配的内存。