分かりました。
ありがとうございました。
検索結果 11 件
- 6年前
- フォーラム: C言語何でも質問掲示板
- トピック: 2次元配列のポインタ標記
- 返信数: 2
- 閲覧数: 2941
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 が表示されそうな気がするのですが、何故でしょうか?
- 7年前
- フォーラム: C言語何でも質問掲示板
- トピック: 分割コンパイル時の構造体宣言
- 返信数: 6
- 閲覧数: 14011
Re: 分割コンパイル時の構造体宣言
Yuoさま
丁寧に対応して頂いてありがとうございました。
もともと、私の
「struct setdata{ ・・・ を書くとstructの二重定義のエラーになると思います。」 これが間違いだったんですね。
この思い込みがあったのでなかなか理解できませんでした。
ありがとうございました。
丁寧に対応して頂いてありがとうございました。
もともと、私の
「struct setdata{ ・・・ を書くとstructの二重定義のエラーになると思います。」 これが間違いだったんですね。
この思い込みがあったのでなかなか理解できませんでした。
ありがとうございました。
- 7年前
- フォーラム: C言語何でも質問掲示板
- トピック: 分割コンパイル時の構造体宣言
- 返信数: 6
- 閲覧数: 14011
Re: 分割コンパイル時の構造体宣言
boxさま、Yuoさま ありがとうございました。無事にコンパイルできました。 ただ、未だにうまく理解できません。(^^; #ifndef SETDATA_H_ #define SETDATA_H_ で一度だけ展開すると言うことは、 a.cppに構造体の宣言が展開され、b.cppには何も展開されないように思ってしまいます。 実際にはどうなのか、展開後のソースは見れないので、ここが上手く理解できますん。 また。私の理解では g++ -c b.cpp a.cpp とやった場合は、 b.cpp側に構造体宣言が展開され、a.cppには何も展開されずエラーになりそうな気がします。 試してみたら、実際にはエ...
- 7年前
- フォーラム: C言語何でも質問掲示板
- トピック: 分割コンパイル時の構造体宣言
- 返信数: 6
- 閲覧数: 14011
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[] だとタイプ名が不...
- 7年前
- フォーラム: C言語何でも質問掲示板
- トピック: 分割コンパイル時の構造体宣言
- 返信数: 6
- 閲覧数: 14011
分割コンパイル時の構造体宣言
初歩的な質問ですいませんが
分割コンパイルの時、双方のファイルで同じ構造体をを使いたい場合は、どうすれば良いでしょうか?
別名で同じ要素の構造体を宣言して使うしかないのでしょうか?
分割コンパイルの時、双方のファイルで同じ構造体をを使いたい場合は、どうすれば良いでしょうか?
別名で同じ要素の構造体を宣言して使うしかないのでしょうか?
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: Cの中でシェルコマンド
- 返信数: 4
- 閲覧数: 2395
Re: Cの中でシェルコマンド
みけCATさま
1000 = 0x3E8
232 = 0xE8
だったんですね。ありがとうございました。
1000 = 0x3E8
232 = 0xE8
だったんですね。ありがとうございました。
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: Cの中でシェルコマンド
- 返信数: 4
- 閲覧数: 2395
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...
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: Cの中でシェルコマンド
- 返信数: 4
- 閲覧数: 2395
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
となってしまいます。
直接シェルコマンドを入力するのは無理なんでしょうか?
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
となってしまいます。
直接シェルコマンドを入力するのは無理なんでしょうか?
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: CとC++の混在
- 返信数: 3
- 閲覧数: 2082
Re: CとC++の混在
みけCATさん、da0さん
レスありがとうございます。
GUN C++の場合、g++だけで完結できるんでしょうか?
とりあえず、C++の流儀で勉強を進めてみます。
ありがとうございました。
レスありがとうございます。
GUN C++の場合、g++だけで完結できるんでしょうか?
とりあえず、C++の流儀で勉強を進めてみます。
ありがとうございました。
- 9年前
- フォーラム: C言語何でも質問掲示板
- トピック: CとC++の混在
- 返信数: 3
- 閲覧数: 2082
CとC++の混在
以前、VisualC++6.0+MFCを使った経験はあります。久しぶりにC++の勉強を始めました。
環境は GNU g++ 4.8.4です。
VCの頃は知らなかったんですが、C++の中でCの関数が当たり前に使えるんですね
そのうえ、C++を使った方が実行ファイルの容量が大きいですね。
fstreamを使うと、fopenより大きくなるし、stringを使うとまた容量が増えるみたいです。
ただ、C++を使うからにはC++の仕様に統一すべきでしょうか?
また、stringクラスは積極的に使うべきでしょうか?
どうも、どうにでも書けるので逆に迷ってしまいます。
環境は GNU g++ 4.8.4です。
VCの頃は知らなかったんですが、C++の中でCの関数が当たり前に使えるんですね
そのうえ、C++を使った方が実行ファイルの容量が大きいですね。
fstreamを使うと、fopenより大きくなるし、stringを使うとまた容量が増えるみたいです。
ただ、C++を使うからにはC++の仕様に統一すべきでしょうか?
また、stringクラスは積極的に使うべきでしょうか?
どうも、どうにでも書けるので逆に迷ってしまいます。