zoukankan      html  css  js  c++  java
  • 面试题2

    一些关于C语言和数据相关的面试题。

    1.内存对齐是什么?

    为了方便操作系统快速访问内存的一种策略。在结构体中(struct),变量存储的首地址是k(4、8)的倍数。可以使用#pragma pack(n)设置。

    参考:博客园内存对齐

    2.栈和堆的区别(内存)?实现一个2维数组,初始化。

    栈是由系统自动分配空间,自动回收的,存储局部变量。堆是由人为的进行分配,人为释放,可分配的空间较大,内存不连续(链表链接),用来动态申请内存的。

    void *memset(void *s,int c,size_t n)

    总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。

    注意memset初始化,因为memset是以字节为单位就是对array指向的内存的4个字节进行赋值,每个都用ASCⅡ为1的字符去填充,转为二进制后,1就是00000001,占一个字节。一个INT元素是4字节,合一起就是

        00000001000000010000000100000001
    就等于16843009,就完成了对一个INT元素的赋值了。所以用memset对非字符型数组赋初值是不可取的!
    #include<stdio.h>
    #include<stdlib.h>
    
    #define R 3
    #define C 4
    int **dynamic2array(int row,int column)
    {
        int **p;
        p=(int **)malloc(sizeof(int *)*row);
        int i=0;
        for(;i<row;i++)
        {
            p[i]=(int *)malloc(sizeof(int)*column);
            memset(p[i],1,column*sizeof(int));
        }
        return p;
    }
    int main()
    {
        int **p=dynamic2array(R,C);
        int i=0,j;
        for(;i<R;i++)
        {
            for(j=0;j<C;j++)
                printf("%d	",p[i][j]);
            int *s=p[i];
            free(s);
            s=NULL;
        }
        free(p);
        p=NULL;
        return 0;
    }

    参考:栈和堆memset动态申请2维数组

    3.strcpy和strncpy的缺陷?

    会出现内存越界、''丢失等情况。

    extern char * strcpy(char *dest,const char *src);复制src起始到''结束的字符串到dest中,返回dest。当dest长度小于src长度时,错误。

    char *strncpy(char *dest,const char *src,size_t num);复制src起始到num个字符到dest中,返回dest。最好紧接着执行dest[strlen(dest)-1]='';

    参考:区别实现

    4.c++中调用C函数加extern:

    http://songpengfei.iteye.com/blog/1100239

  • 相关阅读:
    win7下的vxworks总结
    ubuntu 无法获得锁 /var/lib/dpkg/lock
    项目中用到了的一些批处理文件
    win7下安装 WINDRIVER.TORNADO.V2.2.FOR.ARM
    使用opencv统计视频库的总时长
    January 05th, 2018 Week 01st Friday
    January 04th, 2018 Week 01st Thursday
    January 03rd, 2018 Week 01st Wednesday
    January 02nd, 2018 Week 01st Tuesday
    January 01st, 2018 Week 01st Monday
  • 原文地址:https://www.cnblogs.com/jhooon/p/3830546.html
Copyright © 2011-2022 走看看