当前位置: 首页 > news >正文

福州建网站公司有哪些电商网站

福州建网站公司,有哪些电商网站,网站开发薪水,ui视觉设计常用软件是什么地址是由物理的电线上产生的#xff0c;能够标识唯一一个内存单元。在C语言中#xff0c;地址也叫做指针。 在32位机器中#xff0c;有32根地址线。地址是由32个0/1组成的二进制序列#xff0c;也就是用4个字节来存储地址。 在64位机器中#xff0c;有64根地址线。地址是…地址是由物理的电线上产生的能够标识唯一一个内存单元。在C语言中地址也叫做指针。 在32位机器中有32根地址线。地址是由32个0/1组成的二进制序列也就是用4个字节来存储地址。 在64位机器中有64根地址线。地址是由64个0/1组成的二进制序列也就是用8个字节来存储地址。 指针类型 1. 指针类型可以决定指针解引用的时候访问多少个字节指针的权限 type* p; //说明p是指针变量 //type说明p指向的对象的类型 //说明p解引用的时候访问的对象的大小是sizeof(type) 2. 指针类型还可以决定指针1时的步长 整型指针1跳过4个字节字符型指针1跳过1个字节type* p  n,跳过n*sizeof(type)个字节 野指针 野指针指向的位置是不可知的随机的、不正确的、没有明确限制的 野指针的形成原因 指针未初始化指针越界访问指针指向的空间释放 如何规避野指针 指针初始化明确知道指针类型时应直接初始化不知道指针初始化为什么值时暂时初始化为NULL小心指针越界指针指向空间释放及时置NULL避免返回局部变量的地址指针使用前检查有效性 指针运算 1. 指针 - 整数 #define N_VALUES 5; float values[N_VALUES]; float *vp; for(vpvalues[0];vpvalues[N_VALUES]; ) {*vp; } 2. 指针 - 指针 指针 - 指针得到的数值的绝对值时指针和指针之间的元素个数 指针- 指针运算的前提是两个指针指向同一块空间 int main() {int arr[10] { 0 };printf(%d\n, arr[9] - arr[0]); //9return 0; } 3. 指针的关系运算 地址是有大小的指针的关系运算就是在比较指针的大小 #define N_VALUES 5; float values[N_VALUES]; float *vp;for(vp values[N_VALUES]; vp values[0]; ) {*--vp 0; }//简化后 for(vp values[N_VALUES - 1];vp values[0]; vp-- ) {*vp 0; } //应避免写成简化后的代码。因为C语言规定 //允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针进行比较 //但是不允许与指向第一个元素之前的那个内存位置的指针进行比较 指针与数组 指针指针变量的大小是4/8个字节是专门用来存放地址的 数组是一块连续的空间可以存放一个或多个类型相同的数据 二者的联系 数组中数组名就是数组首元素的地址数组名地址指针 当我们知道数组首元素的地址时因为数组又是连续存放的所以可以通过指针来遍历访问数组 二级指针 二级指针是用来存放一级指针变量的地址的 int main() {int a 10;int* p a;//p是一级指针变量指针变量也是变量变量是在内存中开辟空间的是变量就有地址int** pp p;//pp是二级指针变量二级指针变量用来存放一级指针变量的地址 //int* 是在说明pp指向的是int*类型的变量//* 说明pp是指针变量*(*(pp)) 100; //将100赋给了aprintf(%d\n, a); //100return 0; } 指针数组 指针数组是存放指针的数组数组的每个元素都是指针类型 int arr1[10]; //整型数组——存放整型的数组 char arr2[10];//字符数组——存放字符的数组 int* arr3[10];//指针数组——存放指针的数组 int main() {int* arr1[10];//存放整型指针的数组char* arr2[10];//存放一级字符指针的数组char** arr3[10];//存放二级字符指针的数组return 0; } 例利用指针数组模拟二维数组 int main() {int arr1[] { 1,2,3,4,5 };int arr2[] { 2,3,4,5,6 };int arr3[] { 3,4,5,6,7 };int* parr[] { arr1,arr2,arr3 };int i 0;for (i 0; i 3; i){int j 0;for (j 0; j 5; j){printf(%d , parr[i][j]); //模拟了一个二维数组但实际上是三个分开的数组}printf(\n);}return 0; } 数组指针 数组指针是指向数组的指针存放的是数组地址的指针变量 int (*p1)[10]; //数组指针 //*p1是指针指向的是数组所以*p1是数组指针变量int* p2[10]; //指针数组 数组指针是指针是指向数组的指针 指针数组是数组是存放指针的数组 类比一下整型指针和字符指针 整型指针指向整型变量的指针存放整型变量地址的指针变量字符指针指向字符变量的指针存放字符变量地址的指针变量数组指针指向数组的指针存放数组地址的指针变量 int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int(*p)[10] arr; //数组的地址存储到数组指针变量return 0; } 函数指针 函数指针就是指向函数的指针 int Add(int x, int y) {return x y; } int main() {//类比数组指针/*int arr[10] { 0 };int(*pa)[10] arr;*/printf(%p\n, Add);printf(%p\n, Add); //两种写法//函数名是函数的地址//函数名也是函数的地址int (*pf)(int,int) Add; //pf是函数指针变量//int (*)(int,int)是函数指针类型return 0; } 函数名表示的是函数的地址。与数组不同的是函数名表示的也是函数的地址 数组名表示的是数组首元素的地址 有两个例外 sizeof(数组名这里的数组名表示的是整个数组数组名这里的数组名表示的也是整个数组 函数指针数组 函数指针数组是数组数组的每个元素都是函数指针变量 int Add(int x, int y) {return x y; } int Sub(int x, int y) {return x - y; } int Mul(int x, int y) {return x * y; } int Div(int x, int y) {return x / y; } int main() {int (*pf1)(int, int) Add;int (*pf2)(int, int) Sub;int (*pf3)(int, int) Mul;int (*pf4)(int, int) Div;//函数指针数组int (*pfArr[4])(int, int) { Add,Sub,Mul,Div };return 0; } 指向函数指针数组的指针 int (*(*p)[4](int,int) pfArr; //函数指针数组的地址 //p就是指向函数指针数组的指针 区分函数指针、函数指针数组以及指向函数指针数组的指针 void test(const char* str) {printf(%s\n, str); } int main() {void (*pf)(const char*) test;//pf是函数指针变量 pf是变量名void (*pfArr[10])(const char*);//pfArr是存放函数指针的数组 pfArr是数组名void (*(*p)[10])(const char*) pfArr;//P是指向函数指针数组的指针 p是变量名return 0; }回调函数 回调函数就是一个通过函数指针调用的函数。如果把函数的指针地址作为参数传递给另一个函数当这个指针被用来调用其所指向的函数时我们就说这是回调函数。回调函数不是由该函数的实现方直接调用而是在特定的事件或条件发生时由另外的一方调用的用于对该事件或条件进行响应 举个例子标准库中有一个函数qsort用来排序需要包含头文件#includestdlib.h qsort函数的特点 使用快速排序的方式适用于任意类型的数据 /*void qsort(void* base, //指向了需要排序的数组的第一个元素size_t num, //排序元素的个数size_t size, //一个元素的大小单位是字节int (*cmp)(const void*,const void*)) //函数指针类型—这个函数指针指向的函数能够比较base指向数组中的两个元素*//*void* 的指针—无具体类型的指针void* 类型的指针可以接收任意类型的地址 这种类型的指针是不能直接解引用操作的 也不能直接进行指针运算*/#includestdlib.h int cmp_int(const void* p1, const void* p2) {return *(int*)p1 - *(int*)p2; //控制升序或降序当前为升序//return *(int*)p2 - *(int*)p1; //当前为降序 } void print(int arr[], int sz) {int i 0;for (i 0; i sz; i){printf(%d , arr[i]);} } void test1() //测试qsort排序整型数据 {int arr[10] { 9,8,5,4,3,7,6,2,1,0 };int sz sizeof(arr) / sizeof(arr[0]);//qsort 默认是升序排序qsort(arr, sz, sizeof(int), cmp_int);print(arr, sz); } //测试qsort排序结构体数据 struct Stu {char name[20];int age; }; //按照年龄排序 int cmp_stu_by_age(const void* p1, const void* p2) {return ((struct Stu*)p1)-age - ((struct Stu*)p2)-age; } void test2() {struct Stu arr[] { {zhangsan,20},{lisi,16},{wangwu,19}};int sz sizeof(arr) / sizeof(arr[0]);qsort(arr, sz, sizeof(arr[0]), cmp_stu_by_age);}//按照姓名排序 int cmp_stu_by_name(const void* p1, const void* p2) {return strcmp(((struct Stu*)p1)-name, ((struct Stu*)p2)-name); } void test3() {struct Stu arr[] { {zhangsan,20},{lisi,16},{wangwu,19} };int sz sizeof(arr) / sizeof(arr[0]);qsort(arr, sz, sizeof(arr[0]), cmp_stu_by_name);} int main() {//test1();//test2();test3();return 0; }
http://www.w-s-a.com/news/741116/

相关文章:

  • dw做网站怎么换图片编写网页所用的语言是
  • 外贸网站收录工具个人网站的备案
  • 正规的网站建设工作室海外高延迟服务器做网站
  • 网站设计确认函合肥做网站维护的公司
  • 小说网站推荐网站开发语言怎么查
  • 网页制作基础教程慕课版电子版那种登录才能查看的网站怎么做优化
  • 制作网站用的域名网站域名注册信息查询
  • 公司域名查询官方网站女教师遭网课入侵直播录屏曝
  • 网站开发社交网络功能的作用腾讯公司网站
  • 网站建设需要微信账号和密码网站建设工作汇报
  • 国家城乡住房和建设部网站西安私人网站
  • 天津高端网站定制seo实战教程
  • 网站文章怎么做才能被快速收录网站备案核验系统
  • 子网站建设方案l建设银行网站
  • 免费看舆情网站网站备案用户名忘了怎么办
  • 地方门户网站的分类网站的方案
  • 沧州哪里做网站网站的建设是什么
  • 设计公司海报秦皇岛seo网站推广
  • 网站导航规划wordpress做漫画
  • jsp体育用品网站建设wordpress 10万篇文章
  • 沈阳做微信和网站的公司网站在线支付接口
  • 重庆整合网络营销百度seo快速提升排名
  • 设计师网站外网百度分析工具
  • 旅游网站建设技术解决方案wordpress主题安装后找不到
  • 网站图片文字排版错误管理系统界面设计
  • 网站建设 台州广州惠科互联网技术有限公司
  • 网站页面尺寸大小四川鸿业建设集团网站
  • 做女朋友的网站局网站建设方案word
  • 做阿里国际网站会有成效吗科技网站有哪些
  • 高端公司网站建设北京两学一做网站