3. 笔试题---苏州绿控

苏州绿控

1.变量的声明和定义
变量的定义用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。
2.函数的作用?
一个函数就可以看成一个模块。当用到某个函数功能时,就直接调用相关的函数。
函数是C程序最基本的功能单位。
3.分层+模块化的优缺点?
各模块相对独立、功能单一、结构清晰。
层次的缺点: 使系统把过多时间花在了下层对上层的解释当中,降低了程序运行效率”—-比如Linux的X Window,几层通信来通信去,就没有Windows窗口高效。-但这并不代表,Windows窗口没有模块化设计。
4.char aa[10];为什么strlen(aa)却不是10?
strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个’\0’,如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,知道遇到’\0’停止。
char aa[10];cout<

char *str=[10];
strcpy(str,"0123456789");//将会产生什么结果

分析:常字符串的长度为11,而数组的容量为10,将会造成程序中断。
2)

void getmemory(char *p)
{
    p=(char*)malloc(100);
    strcpy(p,"Hello world");
} 

int main()
{
    char *str=NULL;
    getmeory(str);
    printf("%s\n",str);
    free(str);
    return 0;
}

//这是原来的函数,使用的是值传递方式
void GetMemory(char p){ p=(char )malloc(100); }
//这是正确的内存分配函数,使用的是双重指针,传递进来的是str的指针地址,*p就是原来的str
void GetMemory2(char *p) { *p=(char)malloc(100); }
//这是使用引用的内存分配函数
void GetMemory3(char* &p) { p=(char*)malloc(100); }
void Test(void){
char *str=NULL;
GetMemory(str); // 该函数做的工作是 p=str, p=malloc(100); 和str一点关系都没有,str=NULL;
//GetMemory2(&str); //该函数做的工作是 char**p=&str, str=*p=malloc(100),内存分配成功
//GetMemory3(str); // 传递的是str的引用,函数内的 p还是str,分配成功
strcpy(str, “Hello World!”); //现在可以 知道,第一个函数分配内存错误,strcpy也会失败
printf(“%s\n”, str); //输出只能是空
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值