引用
int main()
{
int a = 10;
int &b = a;
}*/
&`引用相当于变量的别名。所以a和b等价。通俗讲相当于起了两个名字。
引用时 (1)必须要初始化(2)没有空引用 (3)没有二级引用。``
struct Student
{
char s_id[20];
char s_name[20];
char s_sex;
int s_age;
};
int main()
{
Student s;
InitStudent(&s);
return 0;
}
void InitStudent(Student *sp)//指针
{
//if(NULL==sp); return;
assert(sp != NULL);
strcpy(sp->s_id, "201801001");
strcpy(sp->s_name, "hsljkl");
sp->s_sex = 'm';
sp->s_age = 16;
}
void Init_Student(Student & st)//别名 .st相当于主函数里的s.
{
strcpy(st.s_id, "201801001");
strcpy(st.s_name, "hsljkl");
st.s_sex = 'm';
st.s_age = 16;
}
void InitStudent(Student*sp)
{
int ar[5] = { 100, 15, 15, 12, 12 };
strcpy(sp->s_name, "hsljkl");
sp->num = 5;
memmove(sp->grade, ar, sizeof(ar));
}
void Init_Initstudent(Student & t)
{
int ar[5] = { 100, 15, 15, 12, 12 };
strcpy(t.s_name, "hsljkl");
t.num = 5;
memmove(t.grade, ar, sizeof(ar));
}
int main()
{
Student s;
InitStudent(&s);
Init_Initstudent(s);
}
InitStudent(&s)是用指针初始化,Init_Initstudent(s)是用别名初始化的。 这里的memmove是系统自带的函数用法是:`void *memmove( void* dest, const void* src, size_tcount );`
由src所指内存区域复制count个字节到dest所指内存区域。
src和dest所指内存区域可以重叠,但复制后dest内容会被更改。函数返回指向dest的指针。
assert称为断言。其作用是如果它的条件返回错误,则终止程序执行.
1、 局部变量都在stack区。
2、 全局变量、静态变量、字符串常量在data区。