#include <stdio.h>
#include <math.h>
#include <stdio.h>
static char msg[]="Hi,HelLow World!";
char * strValFunc(int pos){return &(msg[pos]);}
double *doublePtrFunc(double * d){return d;}
int charArgFunc(char ch){return ch;}
int main(void) {
{//(1) :pattern "a(*b)[c];" : "double (*g)[*q];" : "char v=strValFunc(*q)[*r];"
int p=3;
int *q=&p;
{
double f[4][*q];
double (*g)[*q]; //pattern "a(*b)[c];"
f[2][1]=3.14;
g=(void *)&f;
(*g)[1]= (f[2][1]);
}
{
int *r=q;
char v=
strValFunc(*q)[*r]; //pattern "a(*b)[*c];"
printf("%d %c\n",*q
,msg
[3+3]); }
}
{ //(2): pattern "a(*b(*c));" : "(double*) doublePtrFunc(*r);" : "double *yPtr=(double *) doublePtrFunc(*r);"
double p=3.14159265;
double *q= &p;
double **r= &q;
{
(double*) doublePtrFunc(*r); //pattern a(*b(*c));"
// g= & doubleFunc;
printf("%g\n",*doublePtrFunc
(&p
)); }
{
double *yPtr=
(double *) doublePtrFunc(*r); //pattern a(*b(*c));
}
}
{ //(3): pattern "a(*b[c]);" : "char (*g[*q]);" : "int *r=q; char * strPtrArr[*q+1];"
int p=3;
int *q=&p;
{
// int val[*q*2]; // allocate void area. variable-sized object may not be initialized
char (*g[*q]); //pattern "a(*b[c]);"
g[1]= &msg[*q];
}
{
int *r=q;
char * strPtrArr[*q+1];
strPtrArr[*r]= (char *)&msg;
int v=
charArgFunc(*strPtrArr[*r]); //pattern "a(*b[*c]);"
printf("%d %c\n",*q
,msg
[3+3]); }
}
{// pattern a[*b][*c];" 失格
int m=3,n=4;
int *p= &m,*q=&n;
{
int a= -1,b= -2, // 左記の宣言に続く、宣言文の一部
integerDynamicArr[*p][*q]; //pattern a[*b][*c]; 完結した宣言文ではない
int i,j;
for(i=0;i<*p;i++)for(j=0;j<*q;j++) integerDynamicArr[i][ j]=100*i+j;
for(i=0;i<*p;i++){
for(j
=0;j
<*q
;j
++) printf("%3d\t",integerDynamicArr
[i
][j
]); }
int u=
integerDynamicArr[*p][*q]; //pattern a[*b][*c];"
printf("%p %p %p %p %p \n",(void*)&integerDynamicArr
[*p
][*q
],(void *)&a
,(void *)&b
,(void *)&i
,(void *)&j
); }
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxzdGRpby5oPgpzdGF0aWMgY2hhciBtc2dbXT0iSGksSGVsTG93IFdvcmxkISI7CmNoYXIgKiBzdHJWYWxGdW5jKGludCBwb3Mpe3JldHVybiAmKG1zZ1twb3NdKTt9CmRvdWJsZSAqZG91YmxlUHRyRnVuYyhkb3VibGUgKiBkKXtyZXR1cm4gZDt9CmludCBjaGFyQXJnRnVuYyhjaGFyIGNoKXtyZXR1cm4gY2g7fQoKaW50IG1haW4odm9pZCkgewoJey8vKDEpIDpwYXR0ZXJuICJhKCpiKVtjXTsiIDogICJkb3VibGUgKCpnKVsqcV07IiA6ICAiY2hhciB2PXN0clZhbEZ1bmMoKnEpWypyXTsiCgkJaW50IHA9MzsKCQlpbnQgKnE9JnA7CgkJewoJCQlkb3VibGUgZls0XVsqcV07CgkJCWRvdWJsZSAoKmcpWypxXTsgIC8vcGF0dGVybiAiYSgqYilbY107IgoJCQlmWzJdWzFdPTMuMTQ7CgkJCWc9KHZvaWQgKikmZjsKCQkJKCpnKVsxXT0gKGZbMl1bMV0pOwoJCQlwcmludGYoIiVnXG4iLCgqZylbMV0pOwoJCX0KCQl7CgkJCWludCAqcj1xOwoJCQljaGFyIHY9CgkJCQlzdHJWYWxGdW5jKCpxKVsqcl07IC8vcGF0dGVybiAiYSgqYilbKmNdOyIKCQkJcHJpbnRmKCIlY1xuIix2KTsgIAoJCQlwcmludGYoIiVkICVjXG4iLCpxLG1zZ1szKzNdKTsKCQl9Cgl9Cgl7IC8vKDIpOiBwYXR0ZXJuICJhKCpiKCpjKSk7IiA6ICIoZG91YmxlKikgZG91YmxlUHRyRnVuYygqcik7IiA6ICJkb3VibGUgKnlQdHI9KGRvdWJsZSAqKSBkb3VibGVQdHJGdW5jKCpyKTsiCgkJZG91YmxlIHA9My4xNDE1OTI2NTsKCQlkb3VibGUgKnE9ICZwOwoJCWRvdWJsZSAqKnI9ICZxOwoJCXsKCQkJKGRvdWJsZSopIGRvdWJsZVB0ckZ1bmMoKnIpOyAgLy9wYXR0ZXJuIGEoKmIoKmMpKTsiCgkJLy8JZz0gJiBkb3VibGVGdW5jOwoJCQlwcmludGYoIiVnXG4iLCpkb3VibGVQdHJGdW5jKCZwKSk7CgkJfQoJCXsKCQkJZG91YmxlICp5UHRyPQoJCQkJKGRvdWJsZSAqKSBkb3VibGVQdHJGdW5jKCpyKTsgLy9wYXR0ZXJuIGEoKmIoKmMpKTsKCQkJcHJpbnRmKCIlZyBcbiIsKnlQdHIpOwoJCX0KCX0KCXsgLy8oMyk6IHBhdHRlcm4gImEoKmJbY10pOyIgOiAiY2hhciAoKmdbKnFdKTsiIDogImludCAqcj1xOyBjaGFyICogc3RyUHRyQXJyWypxKzFdOyIgCgkJaW50IHA9MzsKCQlpbnQgKnE9JnA7CgkJewovLwkJCWludCAgdmFsWypxKjJdOyAvLyBhbGxvY2F0ZSB2b2lkIGFyZWEuIHZhcmlhYmxlLXNpemVkIG9iamVjdCBtYXkgbm90IGJlIGluaXRpYWxpemVkCiAgICAJCWNoYXIgKCpnWypxXSk7ICAvL3BhdHRlcm4gImEoKmJbY10pOyIKCQkJZ1sxXT0gJm1zZ1sqcV07CgkJCXByaW50ZigiJWNcbiIsKCpnWzFdKSk7CgkJfQoJCXsKCQkJaW50ICpyPXE7CgkJCWNoYXIgKiBzdHJQdHJBcnJbKnErMV07CgkJCXN0clB0ckFyclsqcl09IChjaGFyICopJm1zZzsKCQkJaW50IHY9CgkJCQljaGFyQXJnRnVuYygqc3RyUHRyQXJyWypyXSk7IC8vcGF0dGVybiAiYSgqYlsqY10pOyIKCQkJcHJpbnRmKCIlY1xuIix2KTsgIAoJCQlwcmludGYoIiVkICVjXG4iLCpxLG1zZ1szKzNdKTsKCQl9Cgl9Cgl7Ly8gcGF0dGVybiBhWypiXVsqY107IiDlpLHmoLwKCQlpbnQgbT0zLG49NDsKCQlpbnQgKnA9ICZtLCpxPSZuOwoJCXsKCQkJaW50IGE9IC0xLGI9IC0yLCAvLyDlt6boqJjjga7lrqPoqIDjgavntprjgY/jgIHlrqPoqIDmlofjga7kuIDpg6gKCQkJaW50ZWdlckR5bmFtaWNBcnJbKnBdWypxXTsgIC8vcGF0dGVybiBhWypiXVsqY10744CA5a6M57WQ44GX44Gf5a6j6KiA5paH44Gn44Gv44Gq44GECgkJCWludCBpLGo7CgkJCWZvcihpPTA7aTwqcDtpKyspZm9yKGo9MDtqPCpxO2orKykgaW50ZWdlckR5bmFtaWNBcnJbaV1bIGpdPTEwMCppK2o7CgoJCQlmb3IoaT0wO2k8KnA7aSsrKXsKCQkJCWZvcihqPTA7ajwqcTtqKyspIHByaW50ZigiJTNkXHQiLGludGVnZXJEeW5hbWljQXJyW2ldW2pdKTsKCQkJCXByaW50ZigiXG4iKTsJCgkJCX0KCQkJaW50IHU9CgkJCQlpbnRlZ2VyRHluYW1pY0FyclsqcF1bKnFdOyAgLy9wYXR0ZXJuIGFbKmJdWypjXTsiCgkJCXByaW50ZigiJWQgJWQgJWQgXG4iLHUsYSxiKTsKCQkJcHJpbnRmKCIlcCAlcCAlcCAlcCAlcCBcbiIsKHZvaWQqKSZpbnRlZ2VyRHluYW1pY0FyclsqcF1bKnFdLCh2b2lkICopJmEsKHZvaWQgKikmYiwodm9pZCAqKSZpLCh2b2lkICopJmopOwoJCX0KCX0KCXJldHVybiAwOwp9