五
如何产生当前的年月日
time_t now;
struct tm *timenow;
time(&now);
timenow=lacation(&now);
printf("%s",ctime(&timep));
函数:
int add(int x,int y)
{
return x+y;
}
add:
通过函数找到函数入口地址
给形参分配空间
传参
执行函数体
返回
释放空间(栈空间)
变量的存储类型
auto:一般定义的都是这个,省略写
register :定义寄存器变量,寄存器变量不能用&,&取得是内存的地址
extern:声明外部变量,告诉编译器变量在其他文件被定义
static:三个作用1修饰全局变量,改变变量的作用域,只能在本文档中使用2:修饰函数,改变函数的作用域,只能在本文档中使用 3 :修饰局部变量,改变变量的生命周期,直到整个程序结束才被释放,static 修饰的变量存储存储在数据段或者叫静态数据区
宏函数
#include<stdio.h>
#define OUT printf(“helloworld\n”)
#define P(s) printf("%s\n",s) 无参
#define SQT(X) (x+x*x+x) 有参
int main()
{
OUT;
P(“123456”);
SQT(2);
return 0;
}
所有的指针都占4个字节
printf("%d\n",sizeof(int *)) 4
printf("%d\n",sizeof(char *))
内存的访问方式
通过变量名访问
通过地址访问
char *:里面保存的地址里面存放字符
int * P+1和q+1输出后的值不一样,步长不一样
字符串赋值
#include <stdio.h>
void mystrcpy(char *dest char *src)
{
while((*dest++=*src++)!=0);
}
1 取值 2 赋值 3判断 4移动指针
指针的使用步骤
定义指针
给指针赋值
使用
什么是段错误
访问了不能访问的内存
没有初始化的局部变量是垃圾值,不能直接使用野指针
malloc
int *p=(int *)malloc(字节大小)
手动申请一段空间,返回值为首地址,如果申请失败则返回NULL
指针和数据的关系
#include <stdio.h>
#include<stdlib.h>
#include <string.h>
int main()
{
int a[5]={1,2,3,4,5};
int p=a;
int i;
for (i=0;i<sizeof(a)/sizeof(int); i++)
{
printf("%d “,a[i]);
printf(”%d “,p[i]);
printf(”%d ",(p+i));
}
printf("\n");
char *ptr=(char *)malloc(sizeof(char)*32);
strcpy(ptr,“helloworld”);
printf("%s\n",ptr);
for (i=0;i<10;i++)
{
printf("%c",ptr[i]);
}
return 0;
}