Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用结构指针变量的typedef指向同一结构变量 #包括 //这个程序是关于结构和指针的 // 类型定义结构{ int i; 字符c; }str1,*strptr; str1-str[5]; strprpr*ptr; int main(){ ptr=&str;//这显示为不兼容的类型分配**警告** ptr->i=35;//**错误**:请求某个文件中的成员“i” //不是一个结构或联盟 ptr->c='d';//**错误**:请求中的成员“c” //不是结构或联盟的东西 printf(“我的结构值是%d%c\n”,str[0].i,str[0].c); 返回0; }_C_Pointers_Struct_Typedef - Fatal编程技术网

如何使用结构指针变量的typedef指向同一结构变量 #包括 //这个程序是关于结构和指针的 // 类型定义结构{ int i; 字符c; }str1,*strptr; str1-str[5]; strprpr*ptr; int main(){ ptr=&str;//这显示为不兼容的类型分配**警告** ptr->i=35;//**错误**:请求某个文件中的成员“i” //不是一个结构或联盟 ptr->c='d';//**错误**:请求中的成员“c” //不是结构或联盟的东西 printf(“我的结构值是%d%c\n”,str[0].i,str[0].c); 返回0; }

如何使用结构指针变量的typedef指向同一结构变量 #包括 //这个程序是关于结构和指针的 // 类型定义结构{ int i; 字符c; }str1,*strptr; str1-str[5]; strprpr*ptr; int main(){ ptr=&str;//这显示为不兼容的类型分配**警告** ptr->i=35;//**错误**:请求某个文件中的成员“i” //不是一个结构或联盟 ptr->c='d';//**错误**:请求中的成员“c” //不是结构或联盟的东西 printf(“我的结构值是%d%c\n”,str[0].i,str[0].c); 返回0; },c,pointers,struct,typedef,C,Pointers,Struct,Typedef,当我运行这个程序时,会出现一个警告和两个错误。请阅读注释行中的警告和错误 我错过了什么?在您的代码中,strptr已经是指针类型。你需要改变 #include<stdio.h> //This program is about structure and there pointer // typedef struct{ int i; char c; }str1,*strptr; str1 str[5]; strptr *ptr; int main(){ pt

当我运行这个程序时,会出现一个警告和两个错误。请阅读注释行中的警告和错误


我错过了什么?

在您的代码中,
strptr
已经是指针类型。你需要改变

#include<stdio.h>
//This program is about structure and there pointer
//
typedef struct{
    int i;
    char c;
}str1,*strptr;

str1 str[5];
strptr *ptr;

int main(){
    ptr = &str;// This is shown as incompatible type assignment **warning**
    ptr->i=35; // **error**: request for member 'i' in something  
               //not a structure or union

    ptr->c='d';//**error**: request for member 'c' in 
                // something not a structure or union
    printf("My structure values are %d %c\n",str[0].i,str[0].c);

return 0;
}


您键入了指向结构的指针的
strptr
。所以

strptr ptr;
ptr
声明为指向结构的指针
&str
是指向struct的指针类型,与
ptr
的类型不兼容

将上述声明更改为

strptr *ptr;  

您应该声明
ptr
like

strptr ptr;
因为
strptr
已经声明了一个指针

strptr ptr;
总的来说,一定有

typedef struct{
    int i;
    char c;
}str1, *strptr;
       ^^^^^^^^
在这种情况下,
ptr
将指向数组
str
的第一个元素。这句话相当于

ptr = str;
      ^^^^
C中的函数main应该声明为

ptr = &str[0];
像globale变量一样声明
ptr
str
是没有意义的。最好把他们的声明放在主要的地方

int main( void )
         ^^^^^^  

把指针放下就行了

int main( void )
{
    str1 str[5] = { 0 };
    strptr ptr = str;
因为它显然混淆了,并且使用

typedef struct{
  int i;
  char c;
} str1;

错误已被解决,但仍会发出警告:“警告:来自不兼容指针类型的赋值”@AkshayPatil 1)write
ptr=str2)有关更多信息,请参阅
typedef struct{
  int i;
  char c;
} str1;
str * strptr = &str;