文字列の constness をキャストすることをstrtol()
効果的に許可 (および強制) しているようです。strtod()
#include <stdlib.h>
#include <stdio.h>
int main() {
const char *foo = "Hello, world!";
char *bar;
strtol(foo, &bar, 10); // or strtod(foo, &bar);
printf("%d\n", foo == bar); // prints "1"! they're equal
*bar = 'X'; // segmentation fault
return 0;
}
上記では、自分でキャストを実行しませんでした。ただし、基本的には、警告などなしで、 myをfor mestrtol()
にキャストします。(実際には、 として入力することはできないため、安全でない型の変更が強制されます。) 本当に危険ではありませんか?const char *
char *
bar
const char *