#include <stdio.h>
int main(void){
char a[8],b[7],c[6];
printf("a[8]のアドレスは%pです。\n",&a[8]); //a[8]のメモリアドレスを表示
printf("\n");
printf("b[7]のアドレスは%pです。\n",&b[7]); //b[7]のメモリアドレスを表示
printf("\n");
printf("c[6]のアドレスは%pです。\n",&c[6]); //c[6]のメモリアドレスを表示
printf("\n");
char *c1 ="abcde";
printf("c1=%s\n",c1); //abcdeを表示
printf("c1[2]=%c\n",*(c1+2)); //先頭アドレスの2つ先のアドレスに格納されている値(c)を表示
char c2[] ="abcde";
char *pc2;
printf("c2=%s\n",c2); //abcdeを表示
pc2=&c2[2]; //変数c2[2]のアドレスを格納
printf("c2[2]=%c\n",*pc2); //c2[2]アドレスに格納されている値(c)を表示
char *c="abcdefghijklmn";
char cc[]="opqrstuvwxyz";
printf("%c\n", *(c+7));
printf("%c\n", *(cc+2));
return 0;
}
としてコンパイルした所、
test.c: In function ‘main’:
test.c:31: error: conflicting types for ‘c’
test.c:4: note: previous declaration of ‘c’ was here
と出てしまいました。原因が良く分からないのですが教えて頂けますでしょうか?
No.1ベストアンサー
- 回答日時:
>char a[8],b[7],c[6];
>char *c="abcdefghijklmn";
変数cをダブって定義しようとしているためです。
>test.c:4: note: previous declaration of ‘c’ was here
test.cの4行目 注記:前に定義したcがここにありますよ
って書いてます。
コンパイルエラーの読み方を学びましょう。
偶然出会ったサイトに、そのように書いてありました。
かなり単純でしたね。今度からは気を付けたいと思います。
ありがとうございました
No.4
- 回答日時:
単純に変数cが二重定義ということでしょう。
4行目で、文字配列と定義し、31行目でポインター変数として定義
している為。
31行目のポインター変数名を変えればOK。
後、下記はNGです。
printf("a[8]のアドレスは%pです。\n",&a[8]); //a[8]のメモリアドレスを表示
printf("b[7]のアドレスは%pです。\n",&b[7]); //b[7]のメモリアドレスを表示
printf("c[6]のアドレスは%pです。\n",&c[6]); //c[6]のメモリアドレスを表示
文字配列変数aの添え字は0~7
文字配列変数bの添え字は0~6
文字配列変数cの添え字は0~5
なので定義を変える。
char a[9], b[8], c[7];
またはprintf文を変えなければならないです。
printf("a[7]のアドレスは%pです。\n",&a[7]); //a[7]のメモリアドレスを表示
printf("b[6]のアドレスは%pです。\n",&b[6]); //b[6]のメモリアドレスを表示
printf("c[5]のアドレスは%pです。\n",&c[5]); //c[5]のメモリアドレスを表示
No.3
- 回答日時:
test.c:31: error: conflicting types for ‘c’
test.c:4: note: previous declaration of ‘c’ was here
翻訳すると、
test.cの中で31行目に書かれてるcって名前は衝突してるぜ、オィ!!
test.cの中で4行目に、既にcって名前使ってるよな、オラァ!!
ってところでしょう。
>>test.cの中で31行目に書かれてるcって名前は衝突してるぜ、オィ!!
>>test.cの中で4行目に、既にcって名前使ってるよな、オラァ!!
ってところでした。ありがとうございました。
No.2
- 回答日時:
ざっと見た感じだと、
>char a[8],b[7],c[6];
と
>char *c="abcdefghijklmn";
が多重定義扱いになるんじゃないかな?
それと、利用しているコンパイラによっては変数宣言は全て関数の最初に記載しないといけないものもあるので注意。
偶然出会ったサイトに、そのように書いてありました。
かなり単純でしたね。今度からは気を付けたいと思います。
ありがとうございました
>>それと、利用しているコンパイラによっては変数宣言は全て関数の最初に記載しないといけないものもあるので注意。
そんなのもあるんですね。勉強になりましたありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# C言語で再起関数とポインタを用いて文字列反転をする方法がわかりません。 4 2023/04/29 20:32
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
#defineの定数を文字列として読み込む
C言語・C++・C#
-
C言語のポインターに関する警告
C言語・C++・C#
-
C言語初心者の質問失礼します。
C言語・C++・C#
-
-
4
ポインター引数の関数でコンパイルエラーが出る。
C言語・C++・C#
-
5
makeコマンドのエラーについて(
UNIX・Linux
-
6
python エラー
その他(プログラミング・Web制作)
-
7
fgets( ) の返り値は何?
C言語・C++・C#
-
8
makeコマンドが使えません。
UNIX・Linux
-
9
コマンド(例えばls)の出力結果を文字列で取得するプログラムの作成方法
C言語・C++・C#
-
10
C++言語で、構造体のコピーは可能(しても良い)のでしょうか?
C言語・C++・C#
-
11
C言語でヘッダファイルにグローバル変数を宣言する
C言語・C++・C#
-
12
printfの出力内の文字をdefineしたい
C言語・C++・C#
-
13
C言語です
C言語・C++・C#
-
14
main.c:7:43: warning: implicit declaration of func
C言語・C++・C#
-
15
C言語エラーについて
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
printf で二進表示を行いたい。
-
scanfに文字が入力されたときに...
-
【C言語教えてください】sin波...
-
C言語 プログラミング
-
円の面積を求めるプログラミン...
-
8人分のテストの点数を入力し、...
-
【プログラム】2の倍数で表示非...
-
コンパイルエラーについて
-
C言語での、年複利の計算方法...
-
改行について 1行に何個かづ...
-
摂氏の値を計算するプログラム...
-
C言語プログラミング
-
2次方程式の解の表示
-
学校の課題で
-
台形の面積を求めるプログラム
-
C言語でマウス入力(クリックや...
-
C言語で、引数が構造体の場合
-
万年カレンダーのC言語プログラ...
-
分数を表示するプログラム(長...
-
c言語プログラミングでキーボー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語について
-
printf で二進表示を行いたい。
-
cshの文字列操作(0埋め)
-
10個出力で改行したいのですが...
-
コンパイルエラーについて
-
テキストカーソル位置の取得
-
strcmp
-
unsigned int型について
-
c言語でAからZまでを表示する...
-
printf( " %2d", p * q );
-
コマンドラインに出力した文字...
-
printfの出力内の文字をdefine...
-
ホームページをC言語で作りたい...
-
コマンドプロンプトがすぐ消える
-
小数点切捨て表示
-
【C言語教えてください】sin波...
-
switch分のケースを範囲数?に...
-
二つの整数値の大小比較
-
4の倍数を論理演算で表す。。
-
defineで定数が置き換えられな...
おすすめ情報