1 , static 全局变量与普通全局变量有什么区别 2 ,以下函数输出结果是什么 int main() { char *s[] = {"one", "two", "three"}, *p; p = s[1]; printf("%c, %s\n",*(p+1), s[0]); return 0; } 3 ,该函数执行后打印结果 printf("%s","123456789"+3) 4 ,用预处理指令 #define 声明一个常数,用以表明一年中有多少秒。(忽略闰年问题)
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
我在这想看到几件事情:
#define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)
懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。
意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。
————————————————
版权声明:本文为CSDN博主「beiJiXinO」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/beiJiXinO/article/details/51322494
5,用变量 a 给出下面的定义
A)一个有 10 个整型数的数组
B)一个指向函数的指针,该函数有一个整形参数并返回一个整型数
int (*a[10])(int);
6 ,描述下函数指针和指针函数的区别 7 ,请写出 char *p 与 “ 零值 ” 比较的 if 语句
if(p == NULL)
在C/C++中,char是C/C++整型数据中比较古怪的一个,而且关于char还有一个特殊的语言就是char *,它在C/C++中有专门的语义,既不同于signed char *,也不同于unsigned char *,专门用于指以'\0'为结束的字符串
C语言是弱类型还没什么,如果在C++中,你可以试一试,用
char *p="abcd";
是可以通过编译的
但如果用
signed char *p="abcd";
还是
unsigned char *p="abcd";
都是不能通过编译的。
关于这些在C/C++的语言标准或一些经典书籍如TheC++Programing Language中都有很清楚的说明。
8 ,写一个 C 程序,反转下面的单向链表 , 从 1>>2>>3>>4 到 4>>3>>2>>1 head
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
struct Node
{
int data;
struct Node* next;
}node,*p;
struct Node* init_node()
{
struct Node *head = (struct Node*)malloc(sizeof(struct Node));
head->next = NULL;
return head;
}
void head_insert(int date,struct Node *head)
{
struct Node *p1 = (struct Node*)malloc(sizeof(struct Node));
if(p1 == NULL)
{
perror("malloc error");
}
p1->data = date;
p1->next = head->next;
head->next = p1;
};
//反转链表
void revert_head(struct Node* head)
{
struct Node *pre= head;
struct Node *cur = head->next;
struct Node *after;
while(cur->next != NULL )
{
after = cur->next;
cur->next = pre;
pre = cur;
cur = after;
}
cur->next = pre;
head->next->next = NULL;
head->next = cur;
}
//打印链表
void printf_head(struct Node* head)
{
struct Node* temp = head;
while(temp->next != NULL)
{
temp = temp->next;
printf("the date id %d\n",temp->data);
}
}
//销毁链表
void delete_head(struct Node* head)
{
struct Node* temp = head;
while(temp->next != NULL)
{
temp = temp->next;
printf("the date id %d\n",temp->data);
free(temp);
}
free(head);
}
int main()
{
struct Node *head = init_node();
int num = 4;
for(int i = 4;i > 0;i--)
{
head_insert(i,head);
}
//head_insert(num,head);
printf_head(head);
printf("revert \n");
revert_head(head);
printf_head(head);
return 0;
}
编译环境:Windows,Code:Blocks 20.03
9 ,软件生命期分哪些阶段,各阶段的任务是什么? 10 ,翻译下面一段话 When a platform initializes from a cold boot (mechanical off or from an S4 or S5 state), the hardware platform may be configured in a legacy configuration, if not a HW-reduced ACPI platform. From these states, the platform boot firmware software initializes the computer as it would for a legacy operating system. When control is passed to the operating system, OSPM will check the SCI_EN bit and if it is not set will then enable ACPI mode by first finding the ACPI tables, and then by generating a write of the ACPI_ENABLE value to the SMI_CMD port (as described in the FADT). The hardware platform will set the SCI_EN bit to indicate to OSPM that the hardware platform is now config