現在、書籍を用いてC言語について勉強しています。
その書籍の演習問題を取り組んでいる際に疑問が生じたため質問をさせていただきます。
(Googleで調べてみたのですが解決することができませんでした…)
質問は表題の通り、「ポインタ型配列の添字に変数を使用することができないのか」についてです。
この疑問が生じたきっかけのソースコードを下記に記します。
#include <stdio.h> void sort_ptr3ary(int *x[]){ for( int i=0 ; i<3 ; i++ ){ for( int j=3-i ; j>i ; j-- ){ printf("test1\n"); if( *x[j-1] > *x[j] ){ printf("test2\n"); int tmp = *x[j]; *x[j] = *x[j-1]; *x[j-1] = tmp; } } } } int main(void){ int a, b, c; int *x[3] = {&a, &b, &c}; puts("3つの整数値を入力してください。"); printf("a:"); scanf("%d", &a); printf("b:"); scanf("%d", &b); printf("c:"); scanf("%d", &c); sort_ptr3ary(x); for( int i=0 ; i<3 ; i++ ){ printf("*x[%d]=%d\n", i, *x[i]); } return 0; }
このソースを実行すると、「test2」が表示されずに実行がストップしてしまいます。
このことから表題の疑問が生じました。
大変恐れ入りますが、どなたかこの疑問に対するお答えをお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/12 13:01