博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sizeof和mallo
阅读量:5773 次
发布时间:2019-06-18

本文共 1272 字,大约阅读时间需要 4 分钟。

*p++等同于*(p++),二者均为从右向左

NULL和'\0'对指针常量是等价的,只不过用NULL强调指针,或用#define

 

 

这样一看才知道大家对空指针的概念如此浑浊哦!!

首先:
void* 这不叫空指针,这叫无确切类型指针.这个指针指向一块内存,却没有告诉程序该用何

种方式来解释这片内存.所以这种类型的指针不能直接进行取内容的操作.必须先转成别的

类型的指针才可以把内容解释出来.

还有'\0',这也不是空指针所指的内容. '\0'是表示一个字符串的结尾而已,并不是NULL的

意思.

真正的空指针是说,这个指针没有指向一块有意义的内存,比如说:

char* k;
这里这个k就叫空指针.我们并未让它指向任意地点.
又或者
char* k = NULL;
这里这个k也叫空指针,因为它指向NULL 也就是0,注意是整数0,不是'\0'
一个空指针我们也无法对它进行取内容操作.
空指针只有在真正指向了一块有意义的内存后,我们才能对它取内容.也就是说要这样
k = "hello world!";
这时k就不是空指针了.

9.动态数组
#include<stdlib.h>
int *dynarry=(int *)malloc(10*sizeof(int));

如果调用成功,便可dynarry[i](i从0到9)

如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。 当内存不再使用时,

应使用free()函数将内存块释放。 malloc的语法是:指针名=(数据类型*)malloc(长度

),(数据类型*)表示指针.

动态分配数组之后,还可以改变其大小realloc
dynarry=(int *)realloc((void *)dynarry,20*sizeof(int));
如果能够在原地扩大区域,则返回原来的指针;如果在其他地方,返回新内存区域的地址

,原有指针变得不可用;否则一直找不到,返回空指针。因此,一般设置一个临时指针

newarray,if(newarray!=NULL)  dynarray=newarray;else{fprintf(stderr,"Can't

 reallocate!\n")

 

fun(int *a)

{
int i=sizeof(a);
printf("%d\n",i);
}

C编译器把数组当做指针,所以返回值是4,不是数组的所占字节数

判断数组定义时有几个元素

int a[10]={13,45};
int num=sizeof(a)/sizeof(a[0]//分母或者为sizeof(int),答案均为10

 

int a[10],*p;

p=a;
malloc(sizeof(p))//只能分配四个字节,不是40个字节,返回的只是指针本身的大小

 

char *t=malloc(strlen(s)+1);//有字符串结束标志,malloc返回分配的首地址,
strcpy(t,s);最好乘以sizeof(char)

用malloc申请的空间,除非程序退出,否则只能用free释放

转载地址:http://gmaux.baihongyu.com/

你可能感兴趣的文章
Angular - -ngKeydown/ngKeypress/ngKeyup 键盘事件和鼠标事件
查看>>
Android BlueDroid(一):BlueDroid概述
查看>>
Java利用httpasyncclient进行异步HTTP请求
查看>>
循环多少次? 【杭电--HDOJ-1799】 附题+具体解释
查看>>
linux系统终端命令提示符设置(PS1)记录
查看>>
C++运算符重载
查看>>
【Web】URI和URL,及URL的编码
查看>>
宿舍局域网的应用
查看>>
html代码究竟什么用途
查看>>
oracle的substr函数的用法
查看>>
QT 数据库编程四
查看>>
npm下载包时代理配置
查看>>
全球十大理论
查看>>
model.addAttribute("student",student)——渲染
查看>>
JavaWeb开发之普通图片验证码生成技术与算术表达式验证码生成技术
查看>>
python和pywin32实现窗口查找、遍历和点击
查看>>
第二章 概率图模型的基本原理
查看>>
Hadoop HDFS编程 API入门系列之路径过滤上传多个文件到HDFS(二)
查看>>
Nginx反向代理,负载均衡,redis session共享,keepalived高可用
查看>>
CentOS7 yum 安装git
查看>>