100条经典C语言题第二天(10-20)

11.char szstr[10];
strcpy(szstr,"0123456789");
产生什么结果?为什么?
        SZSTR的前10个字符被填充为字符串"0123456789"的字符,但是数组没有留出空间来存储字符串的终止符\0。在C语言中,字符串总是以空字符(\0)结尾,以便函数如strcpy()strlen()printf()等能够正确地识别字符串的结束位置
        【标准答案】长度不一样,出现段错误。
12、数组和链表的区别?
        【标准答案】数组:数据顺序存储,固定大小;
                             链表:数据可以随机存储,大小可动态改变
13、 void main()
{
char aa[10];
printf(“%d”,strlen(aa));
}
会出现什么问题?打印结果是是多少?
        这道题首先应该把void改成int
        其次,数组aa没有被初始化,没有空字符\0,这里的strlen是返回长度  
         【标准答案】sizeof()和初不初始化,没有关系,
        strlen()和初始化有关,打印结果值未知。
 
14、给定结构struct A
{
char t:4;
char k:4;
unsigned short i:8;
unsigned long m;
};问sizeof(A) 
        char t:4;   // 4位位域,通常占用1字节,但只使用4位  
        char k:4;   // 4位位域,同样占用1字节,但只使用4位  
        unsigned short i:8; // 8位位域,通常占用2字节,但只使用8位  
        unsigned long m;    // 通常占用4字节,具体取决于平台和编译器
        1+1+2+4=8
         【标准答案】8
/
15、 struct name1{
char str;
short x;
int num;
};求sizeof(name1)?
   char str;       // char 类型通常占用 1 字节  
    short x;        // short 类型通常占用 2 字节  
    int num;        // int 类型通常占用 4 字节 
这里考虑了对齐规则,给出8
在这个例子中, str 占用1字节,不需要对齐。 x 是  short 类型,可能需要对齐到2字节边界,但由于  str 已经占用了1字节, x 可以直接放在  str 后面,不需要额外的填充。 num 是  int 类型,通常需要对齐到4字节边界。因此,在  x 和  num 之间可能需要填充1字节,以确保  num 的起始地址是4字节的倍数
【标准答案】8
16、 struct name2{
char str;
int num;
short x;
};求sizeof(name2)?
1+4+2 = 7
【标准答案】12
考虑填充字节的不会,希望大佬指导一下
17、程序哪里有错误
wap( int* p1,int* p2 )
{
int *p;
*p = *p1;
*p1 = *p2;
*p2 = *p;
}
未初始化P的内存位置
【标准答案】p为野指针
19、 (void *)ptr 和 (*(void**))ptr的结果是否相同?其
中ptr为同一个指针。
  1. (void *)ptr:这是一个类型转换,将 ptr 转换为一个 void * 类型的指针。void * 是一个通用指针类型,可以指向任何数据类型。这种转换不会改变 ptr 所指向的内存地址,只是改变了指针的类型。

  2. (*(void**))ptr:这是一个指针的解引用和类型转换的组合。首先,ptr 被解引用为一个 void ** 类型的指针(即指向指针的指针),然后这个解引用得到的指针又被转换为一个 void * 类型的指针。如果 ptr 实际上是一个指向 void * 类型指针的指针,那么这种解引用和类型转换的组合会得到与 (void *)ptr 相同的结果。

【标准答案】(void *)ptr 和 (*(void**))ptr值是相同的
20、要对绝对地址0x100000赋值,我们可以用
(unsigned int*)0x100000 = 1234;
那么要是想让程序跳转到绝对地址是0x100000去执行
,应该怎么做?
【标准答案】*((void (*)( ))0x100000 ) ( );
首先要将0x100000强制转换成函数指针,即:
(void (*)())0x100000
然后再调用它:
*((void (*)())0x100000)()

相关推荐

  1. 100经典C语言第二(10-20)

    2024-02-23 19:38:02       29 阅读
  2. 100经典C语言第一(1-10

    2024-02-23 19:38:02       32 阅读
  3. 面试经典150(20)

    2024-02-23 19:38:02       43 阅读
  4. C++经典150

    2024-02-23 19:38:02       11 阅读
  5. c语言编程经典100例——(90~95例)

    2024-02-23 19:38:02       34 阅读
  6. 面试经典150(21-26)

    2024-02-23 19:38:02       41 阅读
  7. 面试经典150(27-28)

    2024-02-23 19:38:02       34 阅读
  8. 面试经典150(101-104)

    2024-02-23 19:38:02       23 阅读
  9. 面试经典150(108-110)

    2024-02-23 19:38:02       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-23 19:38:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-23 19:38:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-23 19:38:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-23 19:38:02       20 阅读

热门阅读

  1. Go 线程池实现案例

    2024-02-23 19:38:02       27 阅读
  2. redis的AOF机制

    2024-02-23 19:38:02       29 阅读
  3. Day13-Linux系统用户管理知识精讲2

    2024-02-23 19:38:02       27 阅读
  4. j2ee规范在tomcat中部署的目录结构

    2024-02-23 19:38:02       26 阅读
  5. xrpc: 一个基于消息队列的的Go语言RPC框架

    2024-02-23 19:38:02       30 阅读
  6. 分班问题 、幼儿园分班(C语言)

    2024-02-23 19:38:02       30 阅读
  7. Odoo17 不再支持视图中的attrs和states

    2024-02-23 19:38:02       30 阅读
  8. ES6 面试题

    2024-02-23 19:38:02       25 阅读
  9. 设计模式-观察者模式(Observer Pattern)

    2024-02-23 19:38:02       27 阅读
  10. 8.3 OpenGL纹理和采样器:采样对象查询

    2024-02-23 19:38:02       27 阅读