"(int の要素数3の配列) へのポインタ" を意味するキャストはどのような書き方になりますか?
(int*[3]) かと思ったのですが、コンパイルエラーになります。
参考までに、ソースをのせておきます。
pai や ai のようなよくわからない変数名は、
型が複雑なためそこだけハンガリアン記法っぽく書いています。
#include<stdio.h>
// func は int の要素数3の配列 {0, 1, 2} の中の n 番目の要素を返す
int func(int (*pai)[3], int n){// pai means 'p'ointer to 'a'rray of 'i'nt.
return (*pai)[n];
}
int main(){
int ai[] = {0, 1, 2}; // ai means array of int.
int i = func(&ai, 1);
// 同じことを、先頭要素のポインタを経由してやりたい
int *pi = &ai[0]; // pi means pointer to int.
int j = func((int*[3])pi, 1); // "(int の要素数3の配列) へのポインタ" を
// 意味するキャストがしたい
// (int*[3]) ではエラーになる
printf("Of course %d = %d.\n", i, j);
return 0;
}
No.4
- 回答日時:
因みに、C言語では、配列もポインタも同じ物なので
#include<stdio.h>
int func(int *pai, int n){
return pai[n];
}
int main(){
int ai[] = {0, 1, 2};
int i = func(ai, 1);
int *pi = ai;
int j = func(pi, 1);
printf("Of course %d = %d.\n", i, j);
return 0;
}
で良い。この方がコードが短くなるし速くなる。
No.3
- 回答日時:
int j = func((int*[3])pi, 1);
↓
int j = func((int(*)[3])pi, 1);
funcの宣言の所には
int func(int (*pai)[3], int n)
って感じで「int (*pai)[3]」って書いてあるよね?ここから「変数名のpai」を削って、前後を括弧で括れば「キャスト」になる
int (*pai)[3]
↓
int (*)[3]
↓
(int (*)[3])
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# ポインタの型変換、どうやるんでしたっけ? 2 2022/03/28 11:00
- C言語・C++・C# Cのオブジェクトファイルの逆アセンブル 5 2023/05/13 01:51
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数桁10進数の*桁目だけを抽出...
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
(int *)の意味
-
数字列を3桁ごとにカンマで区切...
-
比較回数と交換回数表示について
-
if と配列の組み合わせ
-
C言語で三目並べをするプログラ...
-
実数の整数部,小数部の取得
-
卒業研究でよく分からないとこ...
-
C言語で分からないところがあり...
-
C言語での奇数の和
-
アスタリスクで正方形
-
警告 W8065について。
-
入力された2つの整数の差を絶対...
-
【C++】関数ポインタの使い方
-
C言語 エラーの原因がわからな...
-
C言語
-
C言語初心者です、、、お助けく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
複数桁10進数の*桁目だけを抽出...
-
#define _CRT_SECURE_NO_WARNIN...
-
ラップ関数とはどんなものですか?
-
卒業研究でよく分からないとこ...
-
【C++】関数ポインタの使い方
-
実数の整数部,小数部の取得
-
std::set<int> で、ある値が何...
-
C言語 エラーの原因がわからな...
-
c言語
-
system関数がうまくいかない
-
C++でvectorにテキストファイル...
-
acceptをalarmでタイムアウトさ...
-
if と配列の組み合わせ
-
return 1L
-
「{ } で囲むだけ」は正しい?
-
(マルチスレッド)_beginthrea...
-
PowerShellがうまくいかない
-
このプログラミング誰か教えて...
おすすめ情報