-
结构体变量的定义和初始化
struct stu
{
char name[20];
}stu;
int main
{
stu s={"name"}
}
结构体指针传参(传地址):
struct Stu
{
int age;
};
void print1(stu *ps)//结构体指针传参
{
printf("age:%d\n",ps->age);//或者 printf("age:%d\n",(*ps).age)
}
void print2(stu S s)//结构体传参
{
pirntf("age:%d\n", s.age);
}
int main()
{
stu s={40};
print1(&s);//取s的地址
printf(s);
}
Debug:通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
Release:称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优
的,以便用户很好地使用。
例题1模拟实现库函数:strcpy
#include<stdio.h>
#include<assert.h>
int my_strlen(const char *str)//保证传过来的数组不被改变
{
int count=0;
assert(str!=NULL);//保证指针的有效性
while(*str!='\0')
{
count++;
*str++;
}
return count;
}
int main()
{
char arr[]="abcdef";
int len =my_strlen(arr);
printf("%d\n",len);
return 0;
}
例题2对两数组进行交换内容
#include<stdio.h>
#include<assert.h>
void my_strcpy(char* dest,char* src)
{
assert(dest!=NULL);
assert(src!=NULL);//断言
while(*dest++ = *src++)//当为真循环,当为0时停止循环,因为‘\0’的ascii码值对应的0
{
;
}
}
int main()
{
char arr1[]="###########";
char arr2[]="bit";
my_strcpy(arr1,arr2);
printf("%s\n",arr1);
return 0;
}
这两个例题中用到了assert函数,在使用assert函数时要声明#include<assert>
const函数使用分为两种①在*左边 定指针指向的值,不可直接通过修改指针改变
②在*右边 保证指针的指向不能改变
※易记口诀 左定值,右定向