検索結果 11 件

by taku_s
1年前
フォーラム: C言語何でも質問掲示板
トピック: 2次元配列のポインタ標記
返信数: 2
閲覧数: 907

Re: 2次元配列のポインタ標記

分かりました。
ありがとうございました。
by taku_s
1年前
フォーラム: C言語何でも質問掲示板
トピック: 2次元配列のポインタ標記
返信数: 2
閲覧数: 907

2次元配列のポインタ標記

#include <iostream> using namespace std; int main(){ int data[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; for(int i=0; i<3; i++){ for(int j=0; j<3; j++){ cout << *(data[ i ]+j) << '\t'; } cout << endl; } return 1; } これを cout << *(data+(i*3)+j) << '\t'; にするとアドレスが表示になってしまいます。 1 2 3 が表示されそうな気がするのですが、何故でしょうか?
by taku_s
2年前
フォーラム: C言語何でも質問掲示板
トピック: 分割コンパイル時の構造体宣言
返信数: 6
閲覧数: 4446

Re: 分割コンパイル時の構造体宣言

Yuoさま
丁寧に対応して頂いてありがとうございました。
もともと、私の
「struct setdata{ ・・・ を書くとstructの二重定義のエラーになると思います。」 これが間違いだったんですね。
この思い込みがあったのでなかなか理解できませんでした。

ありがとうございました。
by taku_s
2年前
フォーラム: C言語何でも質問掲示板
トピック: 分割コンパイル時の構造体宣言
返信数: 6
閲覧数: 4446

Re: 分割コンパイル時の構造体宣言

boxさま、Yuoさま ありがとうございました。無事にコンパイルできました。 ただ、未だにうまく理解できません。(^^; #ifndef SETDATA_H_ #define SETDATA_H_ で一度だけ展開すると言うことは、 a.cppに構造体の宣言が展開され、b.cppには何も展開されないように思ってしまいます。 実際にはどうなのか、展開後のソースは見れないので、ここが上手く理解できますん。 また。私の理解では g++ -c b.cpp a.cpp とやった場合は、 b.cpp側に構造体宣言が展開され、a.cppには何も展開されずエラーになりそうな気がします。 試してみたら、実際にはエ...
by taku_s
2年前
フォーラム: C言語何でも質問掲示板
トピック: 分割コンパイル時の構造体宣言
返信数: 6
閲覧数: 4446

Re: 分割コンパイル時の構造体宣言

boxさま 多重インクルードガードは、誤ったインクルードで、グローバル変数などの二重定義を防ぐ機能だとおもいますが、 今回、a.cppとb.cppの両ファイルでグローバルな構造体変数を使えないかと思っています。 a.cppで定義 struct setdata{ int value; int pos; }; setdata current[] = {{20, 0} {30, 5} {50, 9}}; b.cppでcurrent[]を使いたい場合、一般の変数の場合、externで宣言すればコンパイルは通ると思いますが構造体の場合は extern setdata current[] だとタイプ名が不...
by taku_s
2年前
フォーラム: C言語何でも質問掲示板
トピック: 分割コンパイル時の構造体宣言
返信数: 6
閲覧数: 4446

分割コンパイル時の構造体宣言

初歩的な質問ですいませんが
分割コンパイルの時、双方のファイルで同じ構造体をを使いたい場合は、どうすれば良いでしょうか?

別名で同じ要素の構造体を宣言して使うしかないのでしょうか?
by taku_s
4年前
フォーラム: C言語何でも質問掲示板
トピック: Cの中でシェルコマンド
返信数: 4
閲覧数: 548

Re: Cの中でシェルコマンド

みけCATさま

1000 = 0x3E8
232 = 0xE8
だったんですね。ありがとうございました。
by taku_s
4年前
フォーラム: C言語何でも質問掲示板
トピック: Cの中でシェルコマンド
返信数: 4
閲覧数: 548

Re: Cの中でシェルコマンド

みけCATさま 失礼しました。ルールを読んでませんでした その後、考えたんですがこれはC言語と言うよりシェルスクリプトの問題なんでしょうね id -u  のシェルコマンドは現在のユーザーIDを返しますのでこの場合ret=1000を期待したのですが id -uは正確には標準出力に出力するものなので、returnがなければ呼び出し側へ戻り値を返さないみたいです そこで、Cを以下に変更 #include <stdio.h> #include <sys/wait.h> void main(){ int ret; ret = system("./test.sh"); printf("ret = %d\n...
by taku_s
4年前
フォーラム: C言語何でも質問掲示板
トピック: Cの中でシェルコマンド
返信数: 4
閲覧数: 548

Cの中でシェルコマンド

Linux GNU C
Cのプログラムかた、ユーザーIDを取得したくて
#include <stdio.h>
#include <sys/wait.h>
void main(){
int ret;
ret = system("id -u");
printf("ret = %d\n", WEXITSTATUS( ret ));
}
のように書いてみたんですが、結果は
1000
ret = 0
となってしまいます。

直接シェルコマンドを入力するのは無理なんでしょうか?
by taku_s
4年前
フォーラム: C言語何でも質問掲示板
トピック: CとC++の混在
返信数: 3
閲覧数: 690

Re: CとC++の混在

みけCATさん、da0さん
レスありがとうございます。
GUN C++の場合、g++だけで完結できるんでしょうか?
とりあえず、C++の流儀で勉強を進めてみます。
ありがとうございました。
by taku_s
4年前
フォーラム: C言語何でも質問掲示板
トピック: CとC++の混在
返信数: 3
閲覧数: 690

CとC++の混在

以前、VisualC++6.0+MFCを使った経験はあります。久しぶりにC++の勉強を始めました。
環境は GNU g++ 4.8.4です。
VCの頃は知らなかったんですが、C++の中でCの関数が当たり前に使えるんですね
そのうえ、C++を使った方が実行ファイルの容量が大きいですね。
fstreamを使うと、fopenより大きくなるし、stringを使うとまた容量が増えるみたいです。
ただ、C++を使うからにはC++の仕様に統一すべきでしょうか?
また、stringクラスは積極的に使うべきでしょうか?
どうも、どうにでも書けるので逆に迷ってしまいます。

詳細検索ページへ移動する