笔试题(3)

  1. 以下为Linux下的32位C程序,请计算sizeof的值

Char str[] = “hello”;

Char *p = str;

Int n = 10;

请计算   (1) sizeof (str) =  (2) sizeof(p) =  (3) sizeof(n) =

sizeof(str) = 6;字符串后面以‘\0’结束,一共占6个字节;

sizeof(p) = 4 ; 32位系统中指针变量占4字节;

sizeof(n) = 4 ;int类型占4个字节;

  1. void Func(char str[100])

{

.......

}

请计算sizeof (str) =

sizeof(str) = 4, 当函数参数为数组时,这个数组参数会被解释为指向第一个元素的指针,所以sizeof(str)实际是指针的大小;

  1. void *p = malloc(100);

请计算 sizeof(p) =

sizeof(p) = 4; 计算的是指针p的大小,不是malloc(100)分配的内存大小

2.用变量a给出下面的定义

 e) 一个有10个指针的数组,该指针是指向一个整型数的; 

        int * p[10];

     f) 一个指向有10个整型数数组的指针 ;

        int (*P)[10];

     g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数;

        int (*g)(int);

     h) 一个有10个指针的数组,该指针指向一个函数,该    函数有一个整型参数并返回一个整型数;

        int (*a[10])(int);

3请问以下代码有什么问题:

int main()
{
char a;
char *str=&a;
strcpy(str,"hello");
printf(str);
return 0;
}

未定义行为,使用 strcpy 会导致内存溢出,可能会崩溃或其他不稳定的行为。为了避免未定义行为,你应该为 str 分配足够的内存来存储字符串 "hello"。你可以使用 malloc 来动态分配内存,或者使用一个足够大的字符数组。

int (*s[10])(int) 表示的是什么啊

 int (*s[10])(int) 函数指针数组,每个指针指向一个int func(int param)的函数。

11、 char szstr[10];
strcpy(szstr,"0123456789");
产生什么结果?为什么?

  长度不一样,出现段错误。

12、数组和链表的区别?

   【标准答案】数组:数据顺序存储,固定大小;
链表:数据可以随机存储,大小可动态改变

13、 void main()
{
char aa[10];
printf(“%d”,strlen(aa));
}                                                                                                      

会出现什么问题?打印结果是是多少?

  【标准答案】sizeof()和初不初始化,没有关系,strlen()和初始化有关,打印结果值未知。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值