一、函数
为了不重复写同一段代码,所以需要封装成函数,每次调用时只需要写函数名。
#include<stdio.h>
void fun()
{int sum = 0;for(int i = 0; i < = 100;i++){sum += i;}
}
int main()
{fun();return 0;
}
1.1 函数的作用:
可以实现某个具体功能的代码块;增加代码的复用性;降低编程难度;函数不被调用不会被执行;对内隐藏细节,对外暴露接口(例如printf,直接能够使用,不需要知道它的具体代码)。
1.2 函数的四种形式
无参数,无返回值
#include<stdio.h>
//计算1加到100的值并输出结果
void fun(){int sum = 0;for(int i = 1;i <= 100;i++){sum += i;}printf("sum=%d\n",sum);
}
int main()
{fun();return 0;
}
无参数,有返回值
#include<stdio.h>
//计算1加到100的值,并返回输出结果
int fun(){int sum = 0;for(int i = 1;i <= 100;i++){sum += i;}return sum;//哪里调用返回到哪里
}
int main()
{int s = fun();printf("s=%d\n",s);return 0;
}
有参数,无返回值
#include<stdio.h>
//计算1加到n的值,并输出计算结果,n的值在调用函数时传入
void fun(int n){int sum = 0;for(int i = 1;i <= n;i++){sum += i;}printf("sum=%d\n",sum);
}
int main()
{fun(100);return 0;
}
有参数,有返回值
#include<stdio.h>
//计算1加到n的值,返回计算结果,n的值在调用函数时传入
int fun(int n){int sum = 0;for(int i = 1;i <= n;i++){sum += i;}return sum;
}
int main()
{int s = fun(100);
printf("s=%d\n",s);return 0;
}
二、字符串
字符串是一个常量,利用数组表示一个字符串,其末尾需要加\0表示字符串已经结束。
#include <stdio.h>
#include <string.h>//字符串的头文件
int main(){char str2[11];strcpy(str2,"Hellowwold");//赋值给它一个字符串
}
三、虚拟内存地址
内存条、显卡、各种适配卡都有其各自的存储地址空间。
操作系统将设备的存储地址空间抽象成一个数组。
对于内存的每一个字节会分配一个32位(2的32次方个字节)或者64位的编号,这个编号称为内存地址。
#include <stdio.h>
int main(){int a = 5;int b = 10;printf("%p\n",&a);printf("%p\n",&b);//内存地址return 0;
}
3.1 获取数组地址
使用取地址符&获取数组的地址时,返回的是数组第0个元素的内存地址。
int main()
{int a[] = {16,47,89,42,38};printf("%p\n",&a);printf("%p\n",&a[0]);
}
3.2 数组与sizeof
计算其字符串的长度
int main(){int a[] = {16,47,89,38};for(int i = 0;i < sizeof(a)/sizeof(a[0]);i++){printf("%d\n",a[i]);}
}
printf("%zu\n",sizeof(a));