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

网站建设优化哪家公司好最新新闻热点事件国际

网站建设优化哪家公司好,最新新闻热点事件国际,网络媒体整合营销,如何打击网站void类型指针 void -> 空类型 void* -> 空类型指针,只存储地址的值,丢失类型,无法访问,要访问里面的值 我们必须对指针进行正确的类型转换,然后再间接引用指针 所有其它类型的指针都可以隐式自动转换成 void 类型…

void类型指针

void -> 空类型

void* -> 空类型指针,只存储地址的值,丢失类型,无法访问,要访问里面的值

我们必须对指针进行正确的类型转换,然后再间接引用指针

所有其它类型的指针都可以隐式自动转换成 void 类型指针,反之需要强制转换。

int arr[] = { 1, 2, 3, 4, 5 };
char ch = 'a';
void* ptr = arr;
printf("0x%p\n", ptr);
printf("%d\n", *(int*)ptr);

而且 void*指针 不允许算术运算

常见错误总结

1.使用未初始化指针

这里面去描述两种场景说明使用未初始化指针的场景

第一种场景 未初始化就使用

int x, * p;
x = 10;
printf("%p\n", p);
p = &x;

第二种场景 比较常见

void func(int* p) {
    static int count = 50;
    p = &count;
}

int main() {
    int x, * p;
    func(p);
    cout << "p = " << p << endl;
}

怎么解决上面的问题 之前的笔记有提到过 使用二级指针

#include <iostream>
using namespace std;void func(int** p) {static int count = 50;*p = &count;
}int main() {int x, * p;func(&p);cout << "p = " << p << endl;
}

2.将值当作地址赋值给指针

怎么解决

1)*p = x;

2)p = &x;

3.忘记解引直接访问内存

char input[64] = { 'h', 'e', 'l', 'l', 'o' };
char* p1, * p2;
p1 = &input[0];
p2 = &input[1];
if (p1 > p2) {cout << "p1 is greater than p2" << endl;
}
else {cout << "p2 is greater than p1" << endl;
}
return 0;

这种情况下 会打印 "p2 is greater than p1"

#include <iostream>
using namespace std;int main() {char input[64] = { 'h', 'e', 'l', 'l', 'o' };char* p1, * p2;p1 = &input[0];p2 = &input[1];if (*p1 > *p2) {cout << "p1 is greater than p2" << endl;}else {cout << "p2 is greater than p1" << endl;}return 0;
}

4.常见的错误4:再次使用忽略重新赋初值

#include <iostream>
#include <string>
using namespace std;int main() {char input[64];char* p1 = input;do {gets_s(input, 64);while (*p1 != '\0') printf("%c", *p1++);} while (strcmp(input, "exit") != 0);return 0;
}

这种只能打印第一个数字 因为p1没有被重新赋值给input

正确的做法是

#include <iostream>
#include <string>
using namespace std;int main() {char input[64];char* p1;do {printf("Enter a string: ");gets_s(input, 64);p1 = input;while (*p1 != '\0') printf("%c", *p1++);printf("\n");} while (strcmp(input, "exit") != 0);return 0;
}

常量引用

在C++中可以声明const引用

语法:const Type&name = var;

const引用让变量拥有只读属性

分两种情况:
1.用变量初始化常引用
2.用字面量初始化常量引用
// 使用变量初始化常量引用
int a = 10;
const int& b = a;
// 用字面量初始化常量引用
const int& c = 20;//会给引用分配内存空间

函数指针

我们来探究一下 函数有没有指针

#include <iostream>
#include <string>
using namespace std;int compare_int(const void* a, const void* b) {int* pa = (int*)a;int* pb = (int*)b;cout << "pa地址:" << &pa << endl;cout << "pb地址:" << &pb << endl;return *pa - *pb;
}int main() {// 函数有没有地址?cout << "compare_int: " << &compare_int << endl;int x = 10, y = 20;compare_int(&x, &y);return 0;
}

函数指针的定义

#include <iostream>
#include <string>
using namespace std;int compare_int(const void* a, const void* b) {int* pa = (int*)a;int* pb = (int*)b;cout << "pa地址:" << &pa << endl;cout << "pb地址:" << &pb << endl;return *pa - *pb;
}int main() {// 函数有没有地址?int(*ptr)(const void*, const void*) = &compare_int;int x = 10, y = 20;//函数指针有两种调用方式//1.解引用方式调用(*ptr)(&x, &y);//2.直接调用ptr(&x, &y);return 0;
}

上面这个是函数指针和void*指针的应用

#include <iostream>
#include <string>
using namespace std;int compare_int(const void* a, const void* b) {int* pa = (int*)a;int* pb = (int*)b;return *pa - *pb;
}int main() {// 函数有没有地址?int arr[12] = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 10, 11, 12 };int(*ptr)(const void*, const void*) = &compare_int;int x = 10, y = 20;qsort(arr, sizeof(arr) / sizeof(arr[0]), sizeof(arr[0]), ptr);cout << "After sorting: ";for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {cout << arr[i] << " ";}return 0;
}

qsort也可以对char数组进行排序

#include <iostream>
#include <string>
using namespace std;int compare_int(const void* a, const void* b) {int* pa = (int*)a;int* pb = (int*)b;return *pa - *pb;
}int compare_char(const void* a, const void* b) {char* pa = (char*)a;char* pb = (char*)b;return *pa - *pb;
}int main() {// 函数有没有地址?char charArray[] = "asodifoadfjdvn";int(*pCompare)(const void*, const void*) = &compare_char;qsort(charArray, sizeof(charArray) / sizeof(char), sizeof(char), pCompare);for (int i = 0; i < sizeof(charArray) / sizeof(char); i++) {cout << charArray[i];}return 0;
}

http://www.yayakq.cn/news/558852/

相关文章:

  • 郑州市做网站公司a汉狮路由器通过域名解析做网站
  • 关于中国幼教网站开发的经验做网站是什么公司
  • 微信官方版官方网站wordpress 中文附件
  • 项目网站开发js放的位置网站建设 教学大纲
  • 网站建设在商标第几类网站建设内页
  • 广州手机网站开发报价重庆传媒公司前十名
  • php网站开发设计系统泰州东方医院男科
  • 荆门住房建设厅网站重庆铜梁网站建设报价
  • 怎么做阿里巴巴英文网站公众号制作模板app
  • 防疫网站网页设计付费网站搭建
  • 注册一个做网站的公司好海南网站建设推广
  • 怎么在工商局网站查公司必应搜索引擎怎么样
  • 南沙区建设局网站扁平化的网站有哪些
  • 佛山做网站推广的公司阿里云WordPress一键安装
  • 网站建设明细建设品牌公司网站
  • 兴化网站建设价格全球搜索引擎排名2022
  • 做蛋糕视频的网站中小企业网站建设与推广分析
  • 濮阳做网站的电话理论网
  • seo怎么优化软件seo关键词排名优化销售
  • 网站建设的五大原则手机微信小程序免费制作平台
  • 固阳网站建设广告公司简介模板及介绍
  • 网站推广优化排名公司设计师服务平台破解
  • 芦苞网站建设淘宝怎么优化关键词排名
  • 西安网站建设需要多少钱企业高端网站
  • 云凡济南网站建设开发厚街网站建设多少钱
  • 网站建设与推广协议书东莞市住房和城乡建设局门户网站
  • 兰州市建设工程招标投标中心网站海外网站服务器下载
  • 青海制作网站国家企业信用信息公示系统(广东)
  • 网站制作公司网站计算机网络实验 做网站的
  • 佛山手机建网站qq网页版 入口