基礎知識 | 每日一練(197)
- 2019 年 12 月 9 日
- 筆記
a=5,b=3;有兩種解法, 一種用算術演算法, 一種用^(異或)
a = a + b;
b = a - b;
a = a - b;
or
a = a^b;// 只能對int,char..
b = a^b;
a = a^b;
or
a ^= b ^= a;
讀者:c和c++中的struct有什麼不同?
小林:
c和c++中struct的主要區別是c中的struct不可以含有成員函數,而c++中的struct可以。c++中struct和class的主要區別在於默認的存取許可權不同,struct默認為public,而class默認為privat
讀者:這個程式有什麼問題
#include <stdio.h>
#include <stdlib.h>
void getmemory(char *p)
{
p=(char *) m alloc(100);
strcpy(p,"hello world");
}
int m ain( )
{
char *str=N U LL;
getmemory(str);
printf("% s/n",str);
free(str);
return 0;
}
小林:
程式崩潰,getmemory中的malloc不能返回動態記憶體,free()對str操作很危險。
讀者:
char szstr[10];
strcpy(szstr,"0123456789");
產生什麼結果?為什麼?
小林:長度不一樣,會造成非法的OS
