梓益C语言学习笔记之指针-创新互联
梓益C语言学习笔记之指针
成都创新互联公司专注于企业营销型网站建设、网站重做改版、牟平网站定制设计、自适应品牌网站建设、成都h5网站建设、商城建设、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为牟平等各大城市提供网站开发制作服务。一、32位平台下,地址是32位,所以指针变量占32位,共4个字节
二、内存单元的地址即为指针,存放指针的变量称为指针变量,故:“指针”是指地址,是常量,“指针变量”是取值为地址的变量。
char*型指针一次取一个字节,int*型指针一次取4个字节,double*取两次4字节
数组名是指针,代表数组首元素的地址,但数组名是常量,不能修改。
三、通过指针变量可以取得数组或函数的首地址
int*p,表示p是一个指针变量,它的值是某个整型变量的地址
指针数组:int *a[10]; 这是个指针数组,数组a中有10个整型的指针变量 a[0]~a[9]
数组指针:int (*a)[10]; 数组指针变量,它是个指针变量。它占4个字节,存地址编号。它指向一个数组,它加1的话,指向下个数组。
函数指针:int(*p)(int,int);//定义了一个函数指针变量p,p指向的函数,必须有一个整型的返回值,有两个整型参数。
如: int max(int x,int y)
{
}
可以用这个p存放这类函数的地址。
p=max;
调用:
int num;
num=(*p)(3,5);
四、指针变量赋值:
1,初始化赋值int a; int*p=&a;
2,赋值语句int a; int *p=NULL; p=&a;
为安全起见,指针变量未赋值不能使用,可先赋NULL
五、内存区域:
操作系统会将物理内存映射为虚拟内存,增加类似如下的分区
1,栈区stack:函数参数,返回值,局部变量(自动赋随机值)
2,堆区heap:动态内存分配
3,全局未初始化区bss:全局未初始化,静态未初始化数据
4,全局初始化区data:全局初始化,静态初始化数据
5,文字常量区text:文字,常量
6,代码区:可执行文件的二进制码
例:
char str[100]="hello";//hello存在字符串里,在栈区,str里的内容可以修改
char *p="hello";//hello 存在文字常量区,属于常量,不能修改,不能通过*p修改原字符串的值,P存在栈区,可以改变P的值使其指向别的字符串。
char *str=(char *)malloc(10*sizeof(char));//堆区,内容可修改
六、数组指针:int a[5]={1,2,3,4,5}; a:数组名,指向首元素地址a==&a[0]; a+1:a[1]的地址; &a:取整个数组地址
七、数组部分初始化后,其余值自动初始化为0,例:int a[5]={0}; char str[100]=" ";
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享标题:梓益C语言学习笔记之指针-创新互联
URL链接:http://scyanting.com/article/dosoie.html