国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C++心愿便利店】No.3---內(nèi)聯(lián)函數(shù)、auto、范圍for、nullptr

這篇具有很好參考價值的文章主要介紹了【C++心愿便利店】No.3---內(nèi)聯(lián)函數(shù)、auto、范圍for、nullptr。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


前言

【C++心愿便利店】No.3---內(nèi)聯(lián)函數(shù)、auto、范圍for、nullptr,C++ 心愿便利店,c++,面試,開發(fā)語言

??個人主頁:@小沈YO.
??小編介紹:歡迎來到我的亂七八糟小星球??
??專欄:C++ 心愿便利店
??本章內(nèi)容:內(nèi)聯(lián)函數(shù)、auto、范圍for、nullptr
記得 評論?? +點贊?? +收藏?? +關(guān)注??哦~


提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

??一、內(nèi)聯(lián)函數(shù)

??1.1.面試題

通過對C語言的學(xué)習,對于宏有了一定的了解,當定義一個宏常量是是非常方便的直接替換這在數(shù)據(jù)結(jié)構(gòu)鏈表處有明顯的體現(xiàn),但是對于宏函數(shù)的寫法就比較容易出錯有以下幾種形式的錯誤需要提醒

#define N 10//宏常量
//宏函數(shù)
#define ADD(int x , int y) {return x+y;}//宏的調(diào)用不需要return
#define ADD(x , y) (return x+y;)
#define ADD(x , y) return x+y;

#define ADD(x , y) x+y;//宏后面不需要分號
//加分號是可以的但對于有些語法是不通過的
int main()
{
	ADD(1, 2);//這種是不會報錯的
	printf("%d\n", ADD(1, 2));//這種會報錯因為宏替換后,會多出一個分號
	return 0;
}


#define ADD(x , y) x+y//可能出現(xiàn)優(yōu)先級錯誤
int main()
{
	ADD(1, 2);
	printf("%d\n", ADD(1, 2));
	printf("%d\n", ADD(1, 2) * 3);//這里替換后變成了1+2*3=7顯然不是想要得到的9
	return 0;
}


#define ADD(x , y) (x+y)//可能出現(xiàn)優(yōu)先級錯誤
int main()
{
	ADD(1, 2);
	printf("%d\n", ADD(1, 2));
	printf("%d\n", ADD(1, 2) * 3);
	int a = 1, b = 2;
	ADD(a | b, a & b);//替換后變成(a|b+a&b)  +號的優(yōu)先級高于| &所以會先算+
	return 0;
}


#define ADD(x , y) ((x)+(y))   這是正確的

宏的優(yōu)缺點?
優(yōu)點:
1.增強代碼的復(fù)用性。
2.提高性能。
缺點:
1.不方便調(diào)試宏。(因為預(yù)編譯階段進行了替換)
2.導(dǎo)致代碼可讀性差,可維護性差,容易誤用,語法很坑。
3.沒有類型安全的檢查 。
宏函數(shù)的優(yōu)點:
1.沒有類型的嚴格限制
2.針對頻繁調(diào)用小函數(shù),不需要再建立棧幀,提高了效率

int Add(int left, int right)
//這種函數(shù)調(diào)用是需要建立棧幀的但是宏函數(shù)不需要直接替換了
{
	return left + right;
}

C++有哪些技術(shù)替代宏?

  1. 常量定義 換用const enum
  2. 短小函數(shù)定義 換用內(nèi)聯(lián)函數(shù)

??1.2.內(nèi)聯(lián)函數(shù)概念

以inline修飾的函數(shù)叫做內(nèi)聯(lián)函數(shù),編譯時C++編譯器會在調(diào)用內(nèi)聯(lián)函數(shù)的地方展開沒有函數(shù)調(diào)用建立棧幀的開銷,內(nèi)聯(lián)函數(shù)提升程序運行的效率

【C++心愿便利店】No.3---內(nèi)聯(lián)函數(shù)、auto、范圍for、nullptr,C++ 心愿便利店,c++,面試,開發(fā)語言

如果在上述函數(shù)前增加inline關(guān)鍵字將其改成內(nèi)聯(lián)函數(shù),在編譯期間編譯器會用函數(shù)體替換函數(shù)的調(diào)用。

  1. 在release模式下,查看編譯器生成的匯編代碼中是否存在call Add
  2. 在debug模式下,需要對編譯器進行設(shè)置,否則不會展開(因為debug模式下,編譯器默認不會對代碼進行優(yōu)化,以下給出vs2013的設(shè)置方式)

【C++心愿便利店】No.3---內(nèi)聯(lián)函數(shù)、auto、范圍for、nullptr,C++ 心愿便利店,c++,面試,開發(fā)語言
【C++心愿便利店】No.3---內(nèi)聯(lián)函數(shù)、auto、范圍for、nullptr,C++ 心愿便利店,c++,面試,開發(fā)語言
【C++心愿便利店】No.3---內(nèi)聯(lián)函數(shù)、auto、范圍for、nullptr,C++ 心愿便利店,c++,面試,開發(fā)語言

inline int add(int x, int y)
{
	return x + y;
}
int main()
{
	int a = 1, b = 2;
	int ret = add(1, 2);
	
	//int ret = add(a | b , a & b);
	//這樣寫也不會像宏函數(shù)一樣出錯了
	printf("%d\n", ret);
	return 0;
}

??1.3.內(nèi)聯(lián)函數(shù)特性

inline是一種以空間換時間的做法,如果編譯器將函數(shù)當成內(nèi)聯(lián)函數(shù)處理,在編譯階段,會用函數(shù)體替換函數(shù)調(diào)用,缺陷:可能會使目標文件變大(代碼膨脹),優(yōu)勢:少了調(diào)用開銷,提高程序運行效率。(不能任何情況下都用內(nèi)聯(lián))

inline對于編譯器而言只是一個建議,不同編譯器關(guān)于inline實現(xiàn)機制可能不同,一般建議:將函數(shù)規(guī)模較小(即函數(shù)不是很長,具體沒有準確的說法,取決于編譯器內(nèi)部實現(xiàn))、不是遞歸、且頻繁調(diào)用的函數(shù)采用inline修飾,否則編譯器會忽略inline特性。下圖為《C++prime》第五版關(guān)于inline的建議:

一般來說,內(nèi)聯(lián)機制用于優(yōu)化規(guī)模較小、流程直接、頻繁調(diào)用的函數(shù)。很多編譯器都不支持內(nèi)聯(lián)遞歸函數(shù),而且一個75行的函數(shù)也不大可能在調(diào)用點內(nèi)聯(lián)地展開。

inline int add(int x, int y)
{
	return x + y;
}
inline int func()
{
	int x1= 0;
	int x2 = 0;
	int x3 = 0;
	int x4 = 0;
	int ret = 0;
	ret += x1;
	ret *= x2;
	ret /= x3;
	ret /= x3;
	ret /= x3;
	ret += x1;
	ret += x1;
	return ret;
}
int main()
{
	int a = 1, b = 2;
	//int ret = add(1, 2);
	int ret = add(a | b , a & b);
	printf("%d\n", ret);
	ret = func();
	return 0;
}

【C++心愿便利店】No.3---內(nèi)聯(lián)函數(shù)、auto、范圍for、nullptr,C++ 心愿便利店,c++,面試,開發(fā)語言

inline int add(int x, int y)
{
	return x + y;
}
inline int func()
{
	int x1= 0;
	int x2 = 0;
	int x3 = 0;
	int x4 = 0;
	int ret = 0;
	ret += x1;
	return ret;
}
int main()
{
	int a = 1, b = 2;
	//int ret = add(1, 2);
	int ret = add(a | b , a & b);//這樣寫也不會像宏函數(shù)一樣出錯了
	printf("%d\n", ret);
	ret = func();
	return 0;
}

【C++心愿便利店】No.3---內(nèi)聯(lián)函數(shù)、auto、范圍for、nullptr,C++ 心愿便利店,c++,面試,開發(fā)語言

inline不建議聲明和定義分離,分離會導(dǎo)致鏈接錯誤。因為inline被展開,就沒有函數(shù)地址了,鏈接就會找不到

//Func.h
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>

using namespace std;

inline void f(int i);



//Func.cpp
#define _CRT_SECURE_NO_WARNINGS 1
#include "Func.h"
void f(int i)
{
	cout << "f(int i)" << i << endl;
}


//Test.cpp
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include"Func.h"
using namespace std;
int main()
{
	f(1);//只有聲明需要地址(但內(nèi)聯(lián)不會進入符號表)
	return 0;
}

Test.cpp調(diào)用f(1)函數(shù),f()只有聲明沒有定義,調(diào)用實際鏈接的時候編譯語法都過了,允許在鏈接的時候再去找地址,定義可能在其他地方,就去其他地方找地址(用函數(shù)名修飾規(guī)則去找)找不到就會出現(xiàn)鏈接錯誤

當Func.h中inline void f(int i);變成void f(int i)就不會出現(xiàn)問題(去掉內(nèi)聯(lián))

【C++心愿便利店】No.3---內(nèi)聯(lián)函數(shù)、auto、范圍for、nullptr,C++ 心愿便利店,c++,面試,開發(fā)語言

//Func.h
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>

using namespace std;

inline void f(int i);

void fx();


//Func.cpp
#define _CRT_SECURE_NO_WARNINGS 1
#include "Func.h"
void f(int i)
{
	cout << "f(int i)" << i << endl;
}
void fx()
{
	f(1);//既有聲明也有定義這里直接展開不需要地址
}


//Test.cpp
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include"Func.h"
using namespace std;
int main()
{
	f(1);
	fx();
	return 0;
}

f()這個函數(shù)肯定是在的,不然fx()就不會調(diào)到它,但是Test.cpp中的 f() 不可調(diào)用Func.cpp中的 f() 可以調(diào)用,一般只有聲明沒有定義調(diào)不到,但是在Func.cpp中定義了 f()也調(diào)不到,原因就是f()函數(shù)定義成了內(nèi)聯(lián),在用的地方就展開了就不需要生成指令建立棧幀把地址放進符號表

【C++心愿便利店】No.3---內(nèi)聯(lián)函數(shù)、auto、范圍for、nullptr,C++ 心愿便利店,c++,面試,開發(fā)語言

//Func.h
//聲明和定義不分離
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>

using namespace std;

inline void f(int i);
{
	cout << "f(int i)" << i << endl;
}


//Test.cpp
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include"Func.h"
using namespace std;
int main()
{
	f(1);
	return 0;
}

??二、auto關(guān)鍵字

??2.1.類型別名思考

隨著程序越來越復(fù)雜,程序中用到的類型也越來越復(fù)雜,經(jīng)常體現(xiàn)在:

  1. 類型難于拼寫
  2. 含義不明確導(dǎo)致容易出錯
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int TestAuto()
{
	return 10;
}
int main()
{
	std::vector<std::string>v;
	//std::vector<std::string>::iterator it = v.begin();《==》auto it = v.begin();
	auto it = v.begin();
	cout << typeid(it).name() << endl;
	//auto e; 無法通過編譯,使用auto定義變量時必須對其進行初始化
	return 0;
}

在編程時,常常需要把表達式的值賦值給變量,這就要求在聲明變量的時候清楚地知道表達式的類型。然而有時候要做到這點并非那么容易,因此C++11給auto賦予了新的含義

??2.2.auto簡介

在早期C/C++中auto的含義是:使用auto修飾的變量,是具有自動存儲器的局部變量,但遺憾的是一直沒有人去使用它,大家可思考下為什么?
C++11中,標準委員會賦予了auto全新的含義即:auto不再是一個存儲類型指示符,而是作為一個新的類型指示符來指示編譯器,auto聲明的變量必須由編譯器在編譯時期推導(dǎo)而得(根據(jù)右邊的值自動推導(dǎo)左邊的類型)

int TestAuto()
{
	return 10;
}
int main()
{
	int a = 10;
	auto b = a;
	auto c = 'a';
	auto d = TestAuto();
	cout << typeid(b).name() << endl;
	cout << typeid(c).name() << endl;
	cout << typeid(d).name() << endl;
	//auto e; 無法通過編譯,使用auto定義變量時必須對其進行初始化
	return 0;
}

【C++心愿便利店】No.3---內(nèi)聯(lián)函數(shù)、auto、范圍for、nullptr,C++ 心愿便利店,c++,面試,開發(fā)語言

使用auto定義變量時必須對其進行初始化,在編譯階段編譯器需要根據(jù)初始化表達式來推導(dǎo)auto的實際類型。因此auto并非是一種“類型”的聲明,而是一個類型聲明時的“占位符”,編譯器在編譯期會將auto替換為變量實際的類型。

??2.3.auto的使用細節(jié)

int main()
{
    int x = 10;
    auto a = &x;
    auto* b = &x;
    auto& c = x;
    cout << typeid(a).name() << endl;
    cout << typeid(b).name() << endl;
    cout << typeid(c).name() << endl;
    return 0;
}

【C++心愿便利店】No.3---內(nèi)聯(lián)函數(shù)、auto、范圍for、nullptr,C++ 心愿便利店,c++,面試,開發(fā)語言

void TestAuto()
{
    auto a = 1, b = 2; 
    auto c = 3, d = 4.0;  // 該行代碼會編譯失敗,因為c和d的初始化表達式類型不同
}

??2.4.auto不能推導(dǎo)的場景

  1. auto不能作為函數(shù)的參數(shù)
// 此處代碼編譯失敗,auto不能作為形參類型,因為編譯器無法對a的實際類型進行推導(dǎo)
void TestAuto(auto a)
{}
  1. auto不能直接用來聲明數(shù)組
void TestAuto()
{
    int a[] = {1,2,3};
    auto b[] = {45,6};
}
  1. 為了避免與C++98中的auto發(fā)生混淆,C++11只保留了auto作為類型指示符的用法
  2. auto在實際中最常見的優(yōu)勢用法就是跟以后會講到的C++11提供的新式for循環(huán),還有l(wèi)ambda表達式等進行配合使用。

??2.5.小場景補充

TypeId 返回一個變量或數(shù)據(jù)類型的“類型”。

??三、基于范圍的for循環(huán)

??3.1.范圍for的語法

在C++98中如果要遍歷一個數(shù)組,可以按照以下方式進行:

#include<iostream>
using namespace std;
void TestFor()
{
	int array[] = { 1, 2, 3, 4, 5 };
	for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i)
		array[i] *= 2;
	for (int* p = array; p < array + sizeof(array) / sizeof(array[0]); ++p)
		cout << *p<<" ";
}
int main()
{
	TestFor();
	return 0;
}

對于一個有范圍的集合而言,由程序員來說明循環(huán)的范圍是多余的,有時候還會容易犯錯誤。因此C++11中引入了基于范圍的for循環(huán)。for循環(huán)后的括號由冒號“ :”分為兩部分:第一部分是范圍內(nèi)用于迭代的變量,第二部分則表示被迭代的范圍

#include<iostream>
using namespace std;
void TestFor()
{
	int array[] = { 1, 2, 3, 4, 5 };
	for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i)
		array[i] *= 2;
	for (int* p = array; p < array + sizeof(array) / sizeof(array[0]); ++p)
		cout << *p<<" ";
		cout << endl;
	for (auto& n : array)//至于這里為什么采用引用
	//是因為不采用引用只是從array中取數(shù)賦值給n,n*=2發(fā)生變化對數(shù)組沒影響所以要引用才能改變數(shù)組
	{
		n *= 2;
	}
	for (auto m : array)
	//當然也不是必須寫成auto m,可以int m ,double m,只是auto會根據(jù)右邊值的類型推導(dǎo)出左邊類型
	{
		cout << m << " ";
	}
	cout << endl;
}
int main()
{
	TestFor();
	return 0;
}

??3.2.范圍for的使用條件

對于數(shù)組而言,就是數(shù)組中第一個元素和最后一個元素的范圍;對于類而言,應(yīng)該提供
begin和end的方法,begin和end就是for循環(huán)迭代的范圍。
注意:以下代碼就有問題,因為for的范圍不確定

void TestFor(int array[])
{
    for(auto& e : array)
        cout<< e <<endl;
}

??四、指針空值nullptr

在良好的C/C++編程習慣中,聲明一個變量時最好給該變量一個合適的初始值,否則可能會出現(xiàn)不可預(yù)料的錯誤,比如未初始化的指針。如果一個指針沒有合法的指向,我們基本都是按照如下方式對其進行初始化:

void TestPtr()
{
int* p1 = NULL;
int* p2 = 0;
// ……
}

NULL實際是一個宏,在傳統(tǒng)的C頭文件(stddef.h)中,可以看到如下代碼:

#ifndef NULL
#ifdef __cplusplus
#define NULL   0
#else
#define NULL   ((void *)0)
#endif
#endif

可以看到,NULL可能被定義為字面常量0或者被定義為無類型指針(void*)的常量。不論采取何種定義,在使用空值的指針時,都不可避免的會遇到一些麻煩,比如:

#include<iostream>
using namespace std;
void f(int)
{
	cout << "f(int)" << endl;
}
void f(int*)
{
	cout << "f(int*)" << endl;
}
int main()
{
	f(0);
	f(NULL);
	f((int*)NULL);
	return 0;
}

【C++心愿便利店】No.3---內(nèi)聯(lián)函數(shù)、auto、范圍for、nullptr,C++ 心愿便利店,c++,面試,開發(fā)語言

程序本意是想通過f(NULL)調(diào)用指針版本的f(int*)函數(shù),但是由于NULL被定義成0,因此與程序的初衷相悖。

在C++98中,字面常量0既可以是一個整形數(shù)字,也可以是無類型的指針(void*)常量,但是編譯器默認情況下將其看成是一個整形常量,如果要將其按照指針方式來使用,必須對其進行強轉(zhuǎn)(void *)0。

  • 在使用nullptr表示指針空值時,不需要包含頭文件,因為nullptr是C++11作為新關(guān)鍵字引入的。

  • 在C++11中,sizeof(nullptr) 與 sizeof((void*)0)所占的字節(jié)數(shù)相同。

  • 為了提高代碼的健壯性,在后續(xù)表示指針空值時建議最好使用nullptr文章來源地址http://www.zghlxwxcb.cn/news/detail-677012.html


到了這里,關(guān)于【C++心愿便利店】No.3---內(nèi)聯(lián)函數(shù)、auto、范圍for、nullptr的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【C++心愿便利店】No.9---C++之內(nèi)存管理

    【C++心愿便利店】No.9---C++之內(nèi)存管理

    ??個人主頁:@小沈YO. ??小編介紹:歡迎來到我的亂七八糟小星球?? ??專欄:C++ 心愿便利店 ??本章內(nèi)容:內(nèi)存管理 記得 評論?? +點贊?? +收藏?? +關(guān)注??哦~ 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 【說明】 棧 又叫堆棧–非靜態(tài)局部變量/函數(shù)參數(shù)/返回值

    2024年02月08日
    瀏覽(25)
  • 【C++心愿便利店】No.7---C++之運算符重載

    【C++心愿便利店】No.7---C++之運算符重載

    ??個人主頁:@小沈YO. ??小編介紹:歡迎來到我的亂七八糟小星球?? ??專欄:C++ 心愿便利店 ??本章內(nèi)容:運算符重載 記得 評論?? +點贊?? +收藏?? +關(guān)注??哦~ 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 通常比較兩個操作數(shù)的大小,會寫成下述方式: 但是對

    2024年02月08日
    瀏覽(26)
  • 【C++心愿便利店】No.1---C++入門(命名空間、缺省參數(shù))

    【C++心愿便利店】No.1---C++入門(命名空間、缺省參數(shù))

    ??個人主頁:@小沈YO. ??小編介紹:歡迎來到我的亂七八糟小星球?? ??專欄:C++ 心愿便利店 ??本章內(nèi)容:命名空間、缺省參數(shù) 記得 評論?? +點贊?? +收藏?? +關(guān)注??哦~ C語言最初由 Dennis Ritchie 于 1969 年到 1973 年在 ATT 貝爾實驗室里開發(fā)出來,主要用于重新實現(xiàn) Unix 操作

    2024年02月11日
    瀏覽(29)
  • 【C++心愿便利店】No.4---C++初談類和對象

    【C++心愿便利店】No.4---C++初談類和對象

    ??個人主頁:@小沈YO. ??小編介紹:歡迎來到我的亂七八糟小星球?? ??專欄:C++ 心愿便利店 ??本章內(nèi)容:類和對象 記得 評論?? +點贊?? +收藏?? +關(guān)注??哦~ 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 C語言是面向過程的,關(guān)注的是過程,分析出求解問題的步

    2024年02月10日
    瀏覽(20)
  • 【C++心愿便利店】No.11---C++之string語法指南

    【C++心愿便利店】No.11---C++之string語法指南

    ??個人主頁:@小沈YO. ??小編介紹:歡迎來到我的亂七八糟小星球?? ??專欄:C++ 心愿便利店 ??本章內(nèi)容:string 記得 評論?? +點贊?? +收藏?? +關(guān)注??哦~ 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 C語言中,字符串是以’\\0’結(jié)尾的一些字符的集合,為了操作方

    2024年02月05日
    瀏覽(18)
  • 【C++心愿便利店】No.13---C++之探索vector底層原理

    【C++心愿便利店】No.13---C++之探索vector底層原理

    ??個人主頁:@小沈YO. ??小編介紹:歡迎來到我的亂七八糟小星球?? ??專欄:C++ 心愿便利店 ??本章內(nèi)容:vector 記得 評論?? +點贊?? +收藏?? +關(guān)注??哦~ 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 STL(standard template libaray-標準模板庫):是C++標準庫的重要組成部

    2024年02月05日
    瀏覽(29)
  • 【C++心愿便利店】No.8---C++之重識類和對象

    【C++心愿便利店】No.8---C++之重識類和對象

    ??個人主頁:@小沈YO. ??小編介紹:歡迎來到我的亂七八糟小星球?? ??專欄:C++ 心愿便利店 ??本章內(nèi)容:再談構(gòu)造函數(shù)、Static成員、友元、內(nèi)部類、匿名對象、再次理解封裝 記得 評論?? +點贊?? +收藏?? +關(guān)注??哦~ 在創(chuàng)建對象時,編譯器通過調(diào)用構(gòu)造函數(shù),給對象中

    2024年02月08日
    瀏覽(23)
  • 【C++心愿便利店】No.14---C++之探索list底層原理

    【C++心愿便利店】No.14---C++之探索list底層原理

    ??個人主頁:@小沈YO. ??小編介紹:歡迎來到我的亂七八糟小星球?? ??專欄:C++ 心愿便利店 ??本章內(nèi)容:list 記得 評論?? +點贊?? +收藏?? +關(guān)注??哦~ 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 list的文檔介紹 list是可以在常數(shù)范圍內(nèi)在任意位置進行插入和刪

    2024年02月05日
    瀏覽(27)
  • 社區(qū)便利店選址五要素,真實案例分析便利店選址步驟分享!

    社區(qū)便利店選址五要素,真實案例分析便利店選址步驟分享!

    順為城市地圖:www.data-dance.com? 近年來,各地政府陸續(xù)出臺了具體的政策指標,以推動城鄉(xiāng)社區(qū)便利店的建設(shè),隨著中國城鎮(zhèn)化率和城市人口密度逐年提升,也將帶動便利店經(jīng)濟的發(fā)展。 數(shù)據(jù)顯示,2021年中國便利店行業(yè)市場規(guī)模,達 2988億元 ,門店數(shù)量達 15.7萬家 。 中國不

    2024年02月05日
    瀏覽(36)
  • 基于SSM的便利店系統(tǒng)

    基于SSM的便利店系統(tǒng)

    ?全網(wǎng)粉絲20W+,csdn特邀作者、博客專家、CSDN新星計劃導(dǎo)師、java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者,博客之星、掘金/華為云/阿里云/InfoQ等平臺優(yōu)質(zhì)作者、專注于Java技術(shù)領(lǐng)域和畢業(yè)項目實戰(zhàn)? ?? 文末獲取項目下載方式 ?? 一、項目背景介紹: 基于SSH的便利店系統(tǒng)是為了滿足顧客、店長和管理者

    2024年02月08日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包