March 2008

March 31, 2008

ポインタって難しい?

C/C++のポインタの機能--参照渡しのような処理

怪しさ満載のポインタ解説記事です。
例題のソースコードがこれ、
#include

int main( void ) {
int *n;
*n = 5;
/* ポインタ変数nに値5を代入 */
printf( "%d\n", *n ); /* ポインタ変数nが持つ値(5)の出力 */
return 0;
}

初期化されていないポインタの参照先に値を代入してます。
もちろん、即突っ込みが入っているのですが、著者も編集者もどこが間違っているのか理解できていない様子。ソースコードだけでなく解説文もかなりおかしくて、どうやら著者はポインタの意味がわかっていないようなんですね。
で、変数宣言の*(アスタリスク)とデリファレンス演算子の*の違いがわからない、というか「*n」という変数名だと思っているようです。なので、2ページ目では
変数には複数の記述方法がある
先ほどまで*nと記述してきたポインタ変数は、宣言以降はnという記述も許される。
とかなってしまう。

思い返してみると、私もプログラミング初心者だった頃はこんな風に考えていたような気がするなあ

matssaku at 00:27|PermalinkComments(2)TrackBack(0)clip!C 

March 12, 2008

[自分メモ]Pythonで文字列とdatetimeの変換

すぐ忘れてしまうので、メモしておきます。
1. 文字列をdatetimeオブジェクトに変換
datetimeモジュールの、datetime.strptimeを使います。
以下のようになります。
import datetime
mydatetime = datetime.datetime.strptime(
  'Sun Mar 2 06:30:04 2008','%a %b %d %H:%M:%S %Y')
だたし、python2.4では、datetime.strptimeが無いので、timeモジュールのstrptime関数を使います。
import datetime
import time
mydatetime = datetime.datetime(
  *time.strptime('Sun Mar 2 06:30:04 2008','%a %b %d %H:%M:%S %Y')[:-3])

2. datetimeオブジェクトを文字列に変換
datetimeオブジェクトのstrftimeを使います。
import datetime
mydatetime = datetime.datetime.now()
datetimestr = mydatetime.strftime('%Y/%m/%d %H:%M:%S')


書式指定の詳細についてはリファレンスを参考にして下さい。

ついでに、
3. エポック秒をdatetimeオブジェクトに変換
timeモジュールのlocaltimeまたはgmtime(UTCに変換)をつかいます。
import datetime
import time
mydatetime = datetime.datetime(
  *time.localtime(1111111111)[:-3])


matssaku at 01:07|PermalinkComments(0)TrackBack(0)clip!Python