#P2578. 指针和结构体指针

指针和结构体指针

Description



指针



#include<iostream>
using namespace std;
int main(){
int a=10;
//定义指针,指向x的地址 
int *p=&a;
//p是int*类型的指针
cout<<p<<endl;
//*p不是地址,是p这个地址指向的值
cout<<*p<<endl;

*p=*p+2;//修改指针指向的变量的值
cout<<p<<" "<<*p<<endl;
cout<<x<<endl;



//采用scanf读入
float a,b;
scanf("%f %f",&a,&b);
printf("a=%d\n",a);
printf("b=%d\n",b);
printf("%d+%d=%d\n",a,b,a+b); 

return 0;
}






结构体指针




#include<iostream>
#include<string.h> 
using namespace std;
struct stu{
char name[100];
double score;
}; 
int main(){
//1、定义结构体变量,再让指针指向这个变量 
stu s;
strcpy(s.name,"zhansan");
s.score=99.9;
cout<<s.name<<" "<<s.score<<endl;

//定义指针,指向结构体s 
stu *stu1=&s;
//在结构体指针中,不能用.来指向结构体成员变量(stu1是地址)
cout<<stu1->name<<" "<<stu1->score<<endl; 
//*stu1是结构体
cout<<(*stu1).name<<" "<<(*stu1).score<<endl; 

//2、new结构体对象,直接赋值给一个指针
stu *stu2=new stu;
strcpy(stu2->name,"lisi");
stu2->score=99.8;
cout<<stu2->name<<" "<<stu2->score<<endl;
delete stu2;//释放内存 

//3、malloc结构体对象,直接赋值给一个指针
//动态内存分配,用于申请一块连续的指定大小的内存区域并返回分配的内存区域地地址 
stu *stu3=NULL;
stu3=(stu*)malloc(sizeof(stu));
strcpy(stu3->name,"wangwu");
stu3->score=99.7;
cout<<stu3->name<<" "<<stu3->score<<endl;
free(stu3);//释放内存 
return 0;
}




Source

知识点