温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

梓益C语言学习笔记之指针

发布时间:2020-06-22 18:26:31 来源:网络 阅读:371 作者:Czyy1 栏目:编程语言

梓益C语言学习笔记之指针

一、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]=" ";


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI