当前位置: 技术问答>linux和unix
哎,太遗憾了,这道面试题我居然没有回答上
来源: 互联网 发布时间:2016-10-11
本文导语: 题目大概是这样的: 现有三个关于定义字符数组和初始化的操作 1)char buf[100] = ""; 2) char *buf = (char *)malloc(100); bzero(buf, 100); 3) char buf[] = "abcdef"; 请详细谈...
题目大概是这样的:
现有三个关于定义字符数组和初始化的操作
1)char buf[100] = "";
2) char *buf = (char *)malloc(100);
bzero(buf, 100);
3) char buf[] = "abcdef";
请详细谈谈三者的区别。
现有三个关于定义字符数组和初始化的操作
1)char buf[100] = "";
2) char *buf = (char *)malloc(100);
bzero(buf, 100);
3) char buf[] = "abcdef";
请详细谈谈三者的区别。
|
1)char buf[100] = "";
在栈(局部变量)或全局区(全局变量),建立数组buf,占用100个字节,buf[0]是0,后面99个是否置0我不知道。
2) char *buf = (char *)malloc(100);
bzero(buf, 100);
在堆上申请100个字节,把buf指向这100个字节,并用bzero把100个字节全部清0
3) char buf[] = "abcdef";
在栈(局部变量)或全局区(全局变量),建立数组buf,占用7个字节,buf[6]是0。
在栈(局部变量)或全局区(全局变量),建立数组buf,占用100个字节,buf[0]是0,后面99个是否置0我不知道。
2) char *buf = (char *)malloc(100);
bzero(buf, 100);
在堆上申请100个字节,把buf指向这100个字节,并用bzero把100个字节全部清0
3) char buf[] = "abcdef";
在栈(局部变量)或全局区(全局变量),建立数组buf,占用7个字节,buf[6]是0。
|
char buf[100] = "";
如果buf是全局变量,那么100个字节全都会置0
局部变量的情况我不知道。LZ如果有兴趣,可以gcc -S a.c,看看汇编代码有没有清0的操作。
如果buf是全局变量,那么100个字节全都会置0
局部变量的情况我不知道。LZ如果有兴趣,可以gcc -S a.c,看看汇编代码有没有清0的操作。