c语言入门 day10

  • 结构体变量的定义和初始化
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
#include
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
#include
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

const函数使用分为两种①在*左边  定指针指向的值,不可直接通过修改指针改变

                                     ②在*右边  保证指针的指向不能改变

※易记口诀 左定值,右定向

你可能感兴趣的:(c语言)