[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/31 10:23 / Filesize : 243 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者歓迎】C/C++室 Ver.49【環境依存OK】



1 名前:デフォルトの名無しさん [2008/02/20(水) 12:33:41 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.48【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1202141921/
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

433 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:37:26 ]
>>432
動かすまでもなく、まともに動かないのは分かる

434 名前:430 [2008/02/23(土) 22:37:28 ]
>>335>>343>>348>>351がもともとの質問でこれを実現したいんです

435 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:37:36 ]
>>430
printf("%s",ch);をprintf("%s",x.st);とすればいい。
嫌か?
じゃあこれでどうだ。
#include <string.h>
#include <stdio.h>
typedef struct {
    char *st;
} strdata;

void f(strdata *x) {
    delete x->st;
    x->st = new char[9];
    strcpy(x->st,"++++++");
}

int main() {
    char *ch = NULL;
    strdata x;
    x.st = ch;
    f(&x);
    ch = x.st;
    printf("%s",ch);
    delete[] ch;

    return 0;
}

436 名前:デフォルトの名無しさん [2008/02/23(土) 22:39:36 ]
>>433
test=(char *)malloc(1);をはずすと上手くいきます なぜですか

437 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:40:58 ]
>>436
それは上手く動いてるんじゃなくて、たまたま動いてるだけ

438 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:41:46 ]
>>335
をチラ見しかしてないけどそれが動くことがとても不思議。
とりあえず期待する動作はなんなのかを日本語で書いてください。

439 名前:デフォルトの名無しさん [2008/02/23(土) 22:42:06 ]
>>435
それだと始めにchが巨大に確保されていたらメモリーリークになると思うのですが

440 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:43:20 ]
>>436
偶然。

あのコードでは、すでになくなったローカル変数を読み取ろうとしている。
運良くメモリ上に残っていれば、一見正しく動いているように見える。
そのtestの行は、残っていた変数の値を破壊する決定打になったのだろう。

441 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:43:21 ]
>>439
思うだけだ



442 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:44:24 ]
見る気もしない。
高速スクロールで華麗にスルー。
違うお題ないの?

443 名前:デフォルトの名無しさん [2008/02/23(土) 22:46:11 ]
Perlで言うところの

use LWP::Simple;
sub foo{ return get('ttp://hoge.com/fuga.zip'); }

これをVC++で極力シンプルにやるにはどうすればいいでしょうか?
環境は以下のとおりです。

VisualC++.net2003 Standard
managedC++不使用 MFC不使用 ATL/WTL使用 STL/Boost使用

444 名前:デフォルトの名無しさん [2008/02/23(土) 22:46:57 ]
>>438
バイナリ文字列 (\0を含む) の初めと終わりを構造体で関数に渡して、バイナリ文字列の内容、長さを書き換えたいんです

445 名前:444 [2008/02/23(土) 22:48:45 ]
純粋なC言語だけでそれを実現したいんです 

446 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:49:59 ]
>>445

一般的に知られている C言語の定義とは違うものを扱ってらっしゃるのですね

447 名前:デフォルトの名無しさん [2008/02/23(土) 22:50:53 ]
最終的には、C言語のみにしますけど今は実験段階なので・・・

448 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:52:02 ]
>>444
なんでchとかtestとか別の変数が出てくるの?
構造体のまま扱い続ければいいでしょ。

449 名前:443 mailto:sage [2008/02/23(土) 22:54:26 ]
>>443
単純にC++でネット上のものをダウンロードさせるには
どうすればいいですか?って聞くべきだった orz

450 名前:デフォルトの名無しさん [2008/02/23(土) 22:55:14 ]
chは現物の文字列です この初めと終わりのアドレスを構造体で渡して変化させるようにしたいんです

451 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:55:32 ]
本でも読んで出直してこいよ
本格的に他人に頼りたいなら金でも払え



452 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:59:15 ]
現物の文字列ってなんだよ
ただのポインタだろ
str.st と等価だ

453 名前:デフォルトの名無しさん [2008/02/23(土) 23:01:55 ]
たとえば、
char *ch=new char [100]; strcpy(ch, "---------");
という文字列に対して、その先頭と後方のアドレスを関数に渡して、関数側で書き換えられるようにしたいんです

454 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:04:50 ]
何にそんなもんをつかうんかわからんが
とりあえずそんなことを考える前に
入門書なりきちんと読め。
たのむから

455 名前:デフォルトの名無しさん [2008/02/23(土) 23:09:26 ]
初めの文字列が200M程度確保されていたとして作業領域も200M使うとします
このとき初めの文字列を解放するか、上書きすれば最高でも400Mしかメモリを使いません
しかし、それができずに返却すると最大 200M + 200M + 200M必要になります

456 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:11:03 ]
>>449
ソケット使ってカリカリやるしか思いつかん

457 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:11:12 ]
>>443
手軽さならWinInet
真剣にやるならWinsock

458 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:13:38 ]
>>450
435みたいに、構造体で渡した後、元の変数に代入し直せばいい。

459 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:15:30 ]
もはやポインタいらんがなw

460 名前:デフォルトの名無しさん [2008/02/23(土) 23:19:19 ]
文字列ではなく、1byte変数の配列を可変長で扱いたいと。
だったら、
typedef struct {
char *baka;
size_t length;
} aho;

とでもして、構造体をやり取りすればいいだろ。
C++だったら、vector<char>、deque<char>でも使えや。

461 名前:443 mailto:sage [2008/02/23(土) 23:20:13 ]
WinInetででググったらいっぱい出てきたんで調べてみる。
サンクス



462 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:20:26 ]
>>443
URLDownloadToFile

463 名前:デフォルトの名無しさん [2008/02/23(土) 23:26:44 ]
>>458
なぜ直接書き換えられないのかわかりません

464 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:29:10 ]
>>463
こっちからしてみたら、なんで構造体を使いたくないのかわからない。

465 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:29:25 ]
>>463
もっと勉強してから出直せ

466 名前:デフォルトの名無しさん [2008/02/23(土) 23:40:17 ]
もともと構造体は使っていますよ あとC言語のみで動かせるようにしたいんです
開始のアドレスと長さを渡しても上と同じだと思います

467 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:41:34 ]
あぼーんしたいからトリップつけてくれ

468 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:44:18 ]
たぶんトリのつけ方を知らない。
「名前欄にレス番つけること」すら今日知ったっぽい

469 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:44:39 ]
釣りだろう

470 名前:デフォルトの名無しさん [2008/02/23(土) 23:46:32 ]
文字列を入力して、
表示するとき右から3文字ごとにコンマをつける方法ってどうすれば?
(例:入力>>344fru38fh4tgiur
   出力>>3,44f,ru3,8fh,4tg,iur)
この続きお願いします・・
#include <iostream.h>
main()
{
char a[50] ;
cout <<"aに文字を入力してください>>" ;
cin.getline(a, 50) ;

int a_count = 0 ;
while( a[a_count] != '\0'){
a_count++ ;
}

cout <<"aを表示します→" ;
for(int i=0 ; i<a_count ; i++){
cout << a[i] ;
}
}


471 名前:デフォルトの名無しさん [2008/02/23(土) 23:48:55 ]
これがたまたまうまく動いたりしますが、実際は間違っているから困っているんです

#include <stdio.h>
#include <string.h>
typedef struct { char *start ; char *end; } bin;

void f(bin *x) {
delete x->start;
x->start = new char [3];
strcpy(x->start,"aa"); }

main() {
char *ch = new char [2];
strcpy(ch,"a");
bin x;
x.start=ch; x.end=ch+strlen(ch);
f(&x);
printf("%s",ch);
}



472 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:50:11 ]
>>470
www.google.co.jp/search?q=C%2B%2B+3%E6%A1%81+%E3%82%B3%E3%83%B3%E3%83%9E&btnG=%E6%A4%9C%E7%B4%A2&lr=

473 名前:デフォルトの名無しさん [2008/02/23(土) 23:53:13 ]
x.start=ch; とした時点で、数値がコピーされるだけになり、文字列を書き換えられなくなります
だから x.start=&ch;と参照渡しをするために
構造体を { char **start ; char **end; }に変更します
そうすると上記のような現象が出ます

474 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:53:48 ]
>>471
f(&x);
ch=x.start;
printf("%s",ch);
でいいだろ
って・・・釣られちまったよ〜〜〜〜ん

475 名前:デフォルトの名無しさん [2008/02/23(土) 23:56:53 ]
>>473
fを呼んだあとのchが指す先はfの中でdeleteされていることに気づいているか?

476 名前:475 [2008/02/23(土) 23:57:42 ]
×>>473
>>471

477 名前:デフォルトの名無しさん [2008/02/24(日) 00:03:07 ]
>>475
>>471ではdeleteやnewが効かない場合があるんです これはちゃんと表示されますか?

#include <stdio.h>
#include <string.h>
typedef struct { char *start ; char *end; } bin;

void f(bin *x) {
delete x->start;
x->start = new char [3];
strcpy(x->start,"aa"); }

main() {
char *ch = NULL;
bin x;
x.start=ch;
f(&x);
printf("%s",ch);}

478 名前:デフォルトの名無しさん [2008/02/24(日) 00:06:58 ]
Cで動くようにしたいとかホザいておきながら、new や deleteを使うバカ
しかも、

baka = new aho[shine];

としたら

delete []baka;

とすることしら知らないバカ。
マニュアルでも読め

479 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:07:28 ]
>>477
じゃあもういいから、こうしとけ
#include <stdio.h> 
#include <string.h> 
typedef struct { char **start ; char **end; } bin; 

void f(bin *x) { 
delete[] *x->start; 
*x->start = new char [3]; 
strcpy(*x->start,"aa"); } 

void g(bin *x) {
delete[] *x->start; 
*x->start = new char [3]; 
strcpy(*x->start,"bb"); } 

main() { 
char *ch = NULL; 
bin x; 
x.start=&ch; 
f(&x); 
printf("%s",ch);
g(&x); 
printf("%s",ch);
}
これで終了、もう来るな

480 名前:デフォルトの名無しさん [2008/02/24(日) 00:08:23 ]
>>477
deleteもnewも効いているはずだよ?

・chが指す先をdeleteしようが、x->start=new・・・をしようが、chの中身は変わらない。
・deleteしても絶対に書き込めなくなるとは限らない。

これらは理解している?

481 名前:not 477 [2008/02/24(日) 00:10:08 ]
>>478
あ・・・そういえばdelete []baka;としないといけなかったんだ・・・・
C厨ですまん。



482 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:15:24 ]
構造体はCでないというつもりか?

483 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:17:32 ]
>>477
main関数内、chだけに注目すれば、
chはNULLで初期化された後、一切変更を受けないだろ。
printfにNULLを渡しているので、未定義。

484 名前:デフォルトの名無しさん [2008/02/24(日) 00:18:48 ]
>>479
それだと、 bin x;を初期化する関数と、適当な配列を入れるとバグるんです なんでうごかないんですか

#include <stdio.h>
#include <string.h>
typedef struct { char **start ; char **end; } bin;

void f(bin *x) {
delete[] *x->start;
*x->start = new char [3];
strcpy(*x->start,"aa"); }

void h(bin *x){
char *ch=new char [3];
ch[0]='X';ch[1]=0;
x->start=&ch; }

main() {
bin x;
h(&x);
f(&x);
char *test=new char [1];
printf("%s",*(x.start));
}

485 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:23:27 ]
バグるじゃ分らんだろ。

486 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:24:02 ]
>>484
h内のローカル変数chのアドレスをx->startに格納しているが、
chはhを抜けると無くなるので、x->startは存在しない場所を指している。

487 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:24:26 ]
>>484
じゃあこれでいいだろう
#include <stdio.h> 
#include <string.h> 
typedef struct { char **start ; char **end; } bin; 

void f(bin *x) { 
delete[] *x->start; 
*x->start = new char [3]; 
strcpy(*x->start,"aa"); } 

char *ch;
void h(bin *x){ 
ch=new char [3]; 
ch[0]='X';ch[1]=0; 
x->start=&ch; } 

main() { 
bin x; 
h(&x); 
f(&x); 
char *test=new char [1]; 
printf("%s",*(x.start)); 
}

488 名前:デフォルトの名無しさん [2008/02/24(日) 00:25:03 ]
char *test=new char [1];をのぞくと、bcc5.5では動作します
ほかのコンパイラでは、入れなくても実行時に落ちます 原因は何ですか?

489 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:25:46 ]
いいように使われてるぞ、デバッグ隊w

490 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:27:01 ]
>>488
原因はchがローカル変数だからだ

491 名前:デフォルトの名無しさん [2008/02/24(日) 00:27:09 ]
>>488
OSが落ちろ!!って指令を下すからじゃないかな?



492 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:27:09 ]
おまいらまだ付き合ってやってんのか
こいつ分かってるけど、分からないフリしてるだけだろ

493 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:28:09 ]
>>492
こっちも暇だからね

494 名前:デフォルトの名無しさん [2008/02/24(日) 00:28:54 ]
バカは放置汁。
最初の例から考えると、文字列定数や、文字配列をもdeleteしようとしてるんだから。


495 名前:デフォルトの名無しさん [2008/02/24(日) 00:30:19 ]
>>486>>487
しかし、これはどのコンパイラでも正常に動きませんか? C++ですが

#include <stdio.h>
#include <string.h>

void h(char *&x){
char *ch=new char [11];
strcpy(ch,"ABCDEFGHIJ");
x=ch; }

main() {
char *x;
h(x); printf("%s",x); }

496 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:31:31 ]
>>495
それが動くのはchar*&だからだ

497 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:32:23 ]
>>495
うん。それはローカル変数アドレスを取る(ポインタを取る、参照を取る)
ということをやっていないから問題ない。

498 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:33:28 ]
>>495
そのhは、chの「値」をコピーしているので、
chが無くなっても値はxに格納されているから動く。
>>484はchの「アドレス」を格納しているだけ。

499 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:33:34 ]
>>488
プログラミングは諦めたほうがいい
1.簡単な事をややこしくして
2.バグを入れて
3.聞きまくることで他人の邪魔をする

別の仕事探せ

少なくともオレはそれを勉強熱心とはいえない

500 名前:デフォルトの名無しさん [2008/02/24(日) 00:41:03 ]
だから、バカは放置だって。
手段に固執して、何の目的でそのイミフな手段をとろうとしているのか自分でわかってない。


501 名前:デフォルトの名無しさん [2008/02/24(日) 00:41:58 ]
確認したいのですが、newは、deleteするかプログラムが終了するまで解放されないはずですよね?
タスクマネージャで確認するとf()を抜けてもメモリはそのままです

#include <stdio.h>

f(){
char *x=new char [200*1024*1024]; }


main() {
f();
getchar();
}



502 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:42:13 ]
>>495
ちなみに、それをポインタを使って書き直すとこうなる。
#include <stdio.h>
#include <string.h>

void h(char **x) {
    char *ch = new char[11];
    strcpy(ch, "ABCDEFGHIJ");
    *x = ch;
}

int main() {
    char *x;
    h(&x);
    printf("%s",x);

    return 0;
}

503 名前:デフォルトの名無しさん [2008/02/24(日) 00:43:28 ]
だからローカルで定義された変数や配列でも、そのアドレスが判明していれば、main()などで操ったり解放できますよね

504 名前:デフォルトの名無しさん [2008/02/24(日) 00:46:04 ]
>>503
マニュアル嫁
ヒープの意味を理解してからnew や delete を使え。
変数の記憶クラスを理解しろ


505 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:47:43 ]
ローカル定義は外に抜けたら、内容が残っている保証はない
allocしたなら残っているけど

506 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:48:18 ]
>>503
だからの前後が繋がってないぞ
newした領域がdeleteされるまで解放されなかったら
なぜローカルで定義された変数や配列をmainから操れることになるんだ

507 名前:デフォルトの名無しさん [2008/02/24(日) 00:49:11 ]
なぜですか? 間違っていないと思いますよ これはmain()側で解放してます

#include <stdio.h>
#include <string.h>

void h(char **x) {
char *ch = new char[200*1024*1024];
*x = ch; }

main() {
char *x;
h(&x);
getchar();
delete x;
getchar();}

508 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:52:46 ]
>>507
それはhのローカルで定義された変数chをmainから操ってるわけではないな
単にnewした領域へのポインタchをmainのxにコピーして渡してるだけだ

509 名前:デフォルトの名無しさん [2008/02/24(日) 00:54:23 ]
一度目のキー入力で、200M分メモリを解放しますよ タスクマネージャみてください

510 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:54:39 ]
伸びがいいから何かと思ったら未だ相手にしてたのか。

511 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:55:37 ]
>>507
newで確保したメモリへのポインタをmainに連れて行っているだけ。
newやmallocで確保したメモリはソース上のスコープに縛られずに使える。

一方、>>484では、x->start=&ch;というように、
ローカル変数へのポインタをmainへ持って行っている。
しかし、mainに戻ったときには既に変数chそのものが居なくなっているのでうまくいかない。



512 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:56:05 ]
見事な無自覚の自己中心主義だな、早く治せよ

>>507
なにしてるかわかってるならいいけど、ポインタ一回お浚いしたら?

513 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:56:26 ]
>>507
あんたはnewで確保した領域と、それを指すポインタ変数を、同一のものであると勘違いしてないか?
>>507のコードでも、ポインタ変数chはhを抜ける時に消滅するのは分かるか?

514 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:00:53 ]
まずchar *x の xは、int xや float xと同じで、ただのローカル変数であることを覚えとけ

515 名前:デフォルトの名無しさん [2008/02/24(日) 01:04:18 ]
しかしこれは動きません

#include <stdio.h>
#include <string.h>
typedef struct { char **start ; char **end; } bin;

void h(bin *x){
char *ch = new char[11];
strcpy(ch, "ABCDEFGHIJ");
*(x->start)=ch; }

main() {
bin x;
h(&x);
printf("%s",*(x.start));
}

516 名前:デフォルトの名無しさん [2008/02/24(日) 01:04:59 ]
>

517 名前:デフォルトの名無しさん [2008/02/24(日) 01:05:04 ]
free(p)ってやるとpがNULLになるとか思っちゃう人なのかな。

518 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:05:45 ]
お前らバカの相手すんなって。つけあがるから。

519 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:06:51 ]
>>515
x->startをまったく初期化しないまま、*(x->start)なんかに代入しているのが間違い。
>>513に答えろ

520 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:08:18 ]
俺結構ポインタの理解があやふやで、だからなるべくポインタのややこしい部分には触れないプログラム今までしてきたんだけど、
このスレ読んだらなんとなく理解できてきた気がする。
C言語でnewとdeleteを使い続けてる人ありがとう!
あと、もちろん解説してくれてるみんなもありがとう!
明日からもstringばりばり使っていこうと思います。

521 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:09:24 ]
>>515
そうだね、それは動かないね
だから?
何を聞きたいのか明確に



522 名前:デフォルトの名無しさん [2008/02/24(日) 01:09:53 ]
ポインタ変数が消滅するのはわかります
関数での、初期化と書き換えをする方法がわかりたいです

523 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:10:25 ]
>>515
#include <stdio.h>
#include <string.h>
typedef struct { char **start ; char **end; } bin;

void h(bin *x) {
char *ch = new char[11];
strcpy(ch, "ABCDEFGHIJ");
*(x->start)=ch; }

int main() {
bin x;
char *p;
x.start = &p;
h(&x);
printf("%s", p);
delete[] p;
}


524 名前:デフォルトの名無しさん [2008/02/24(日) 01:10:30 ]
new/deleteを使うということは当然C++だよな?
じゃあ、なんでメモリ操作を隠蔽するクラスを作ろうとしないの?
IQ低いから?

525 名前:デフォルトの名無しさん [2008/02/24(日) 01:10:53 ]
>>522
みんなが何回も例を出しているのに・・・(T_T)

526 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:12:15 ]
>>524
上のほうで最終的にCで書くと言っていたはず。
俺にはなんで今はnew[]使ってC++にするのか理解できないけど。

527 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:12:50 ]
>>522
おまいがポインタについて知っている知識をすべて述べよ

528 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:12:53 ]
>>522
何度か出てる正しく動く例が気に入らない理由はなぜかね

529 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:18:03 ]
仮に、彼へC言語ポインタ完全制覇を与えたとしても、
それでわかってくれるかどうか不安になる。

530 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:19:41 ]
>>522
皆が何言ってるかほとんど分からないC++素人だけど
一日ぐらい気分変えて犬の散歩にでも行ったら?
まあ、犬のウンコの処理しながら考えたりさ
その後で、また一から作ってみる
以外とできるかもよ

531 名前:デフォルトの名無しさん [2008/02/24(日) 01:21:40 ]
>>523
それだとうごきました サンクス

x.start = &p;
h(&x);
printf("%s", *x.start);

初めにメモリ上にchar*型が確保されないと受け取れないって事か



532 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:23:55 ]
>>530
犬のウンコの処理を考えたり に見えて
delete unko;とか脳内で実行しそうになった

533 名前:デフォルトの名無しさん [2008/02/24(日) 01:28:09 ]
>>523
pを確保しなくても、これでもいいはずですよね

int main() {
bin x;
x.start = new char *;
h(&x);
printf("%s", *x.start);
}






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<243KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef