如何使用结构指针变量的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=str代码>2)有关更多信息,请参阅
typedef struct{
int i;
char c;
} str1;
str * strptr = &str;