私は問題が何かを考え出したと思います.Cは臭いです。これは、局所的に宣言されたポインタを一方向に扱い、ポインタを別のものとして渡します。これは、questionへの回答です。数日前に投稿しました。私はそこに投稿しようとしましたが、プログラムは適合しませんでした。ポインタを増分しても、配列として扱うのはなぜ失敗するのですか?パート2
私はあなたの質問が何であるかわからないんだけど、このコードはおそらく、あなたがやりたいことはありません// Test arrays and pointers
#include <stdio.h>
// #include <string.h>
#define EOL "\n"
typedef struct
{
int useless1;
int useless2;
} type1;
void function1(char* s)
{
printf("Pointer to string. ");
while (*s)
putchar(*s++);
printf(EOL);
}
void function2(char* s)
{
int i=0;
printf("Index into string. ");
while (s[i])
putchar(s[i++]);
printf(EOL);
}
void functionX1(type1* p, int count)
{
printf("Pointer to struct." EOL);
for (int i=0; i<count; i++)
{
printf("index: %d useless1: %d" EOL, i, p->useless1);
printf("index: %d useless2: %d" EOL, i, p->useless2);
p++;
}
printf(EOL);
}
void functionX2(type1* p, int count)
{
printf("Index into array of structures." EOL);
for (int i=0; i<count; i++)
{
printf("index: %d useless1: %d" EOL, i, p[i].useless1);
printf("index: %d useless2: %d" EOL, i, p[i].useless2);
}
printf(EOL);
}
void getptr1(char* s, char** ss)
{
*ss = s;
}
void getptr2(type1* ptr, type1** pptr)
{
*pptr = ptr;
}
int main(int argc, char** argv)
{
// Work with strings of characters
char* s;
function1(argv[0]);
function2(argv[0]);
function1(*argv );
function2(*argv );
getptr1(argv[0], &s);
function1( s);
function2( s);
printf("main Pointer to string. ");
while (*s)
putchar(*s++);
printf(EOL);
int i=0;
printf("main Index into string. ");
while (s[i])
putchar(s[i++]);
printf(EOL);
// Work with array of structures
#define count 3
type1 a[count];
int x1 = 123;
int x2 = 789000;
int kx = 111;
for (int i=0; i<count; i++)
{
a[i].useless1 = x1;
a[i].useless2 = x2;
x1 += kx;
x2 += (kx * 1000);
}
// functions1(&a , count); Fail
// functions2(&a , count); Fail
functionX1(&a[0], count);
functionX2(&a[0], count);
functionX1(a , count);
functionX2(a , count);
type1* b;
getptr2(a, &b);
functionX1(b , count);
functionX2(b , count);
printf("main Pointer to struct." EOL);
for (int i=0; i<count; i++)
{
printf("index: %d useless1: %d" EOL, i, b->useless1);
printf("index: %d useless2: %d" EOL, i, b->useless2);
b++;
}
printf(EOL);
printf("main Index into array of structures." EOL);
for (int i=0; i<count; i++)
{
printf("index: %d useless1: %d" EOL, i, b[i].useless1);
printf("index: %d useless2: %d" EOL, i, b[i].useless2);
}
printf(EOL);
}
あなたの質問は何ですか?:
はこのような何かを考えてみましょうか – smarx
あなたの以前の質問へのリンクを追加してください。それは理解するのが一層役立ちます。 – LinuxStuff
Cは臭いですか?あなたはそれをタグの説明に追加する必要があります – CIsForCookies