基礎知識 | 每日一練(197)

  • 2019 年 12 月 9 日
  • 筆記

讀者:交換兩個變數的值,不使用第三個變數。即a=3,b=5,交換之後小林:

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

Tags: