當前位置:首頁 » 編程語言 » c語言命名空間實現
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言命名空間實現

發布時間: 2022-04-19 11:41:27

⑴ 請教c語言和C++的命名空間問題

從技術上說,其實沒有<iostream.h>這樣的東西——標准化委員會在簡化非C標准頭文件時用<iostream>取代了
它。必須知道的是,如果編譯器同時支持 <iostream>和<iostream.h>,那頭文件名的使用會很微妙。例如,
如果使用了#include <iostream>, 得到的是置於名字空間std下的iostream庫的元素;如果使
用#include <iostream.h>,得到的是置於全局空間的同樣的元素。
在全局空間獲取元素會導致名字沖突,而設計名字空間的初
衷正是用來避免這種名字沖突的發生。
iostream 里的所有內容被封裝在 std 命名空間內,iostream.h 里的則沒有,所以,如果 #include
<iostream>,就需要 using namespace std; 如果是 #include
<iostream.h>,就不必這樣。iostream.h裡面定義的所有類以及對象都是在全局空間里,所以你可以直接用cout
但在iostream裡面,它所定義的東西都在名字空間std裡面,所以你必須加上 using namespace std才能使用cout
一般一個C++的老的帶「.h」擴展名的庫文件,比如iostream.h,在新標准後的標准庫中都有一個不帶「.h」擴展名的相對應,區別除了後者的好
多改進之外,還有一點就是後者的東東都塞進了「std」名字空間中。

⑵ C語言裡面有沒有簡單的方法實現命名空間效果

沒什麼太簡單的方法。
比較通用的 避免重名的方法
1 限制有效范圍
凡是僅在一個文件中使用的, 包括函數和全局變數,一律定義為static
這樣即使不同文件重名,也沒任何問題
2 對於整個工程有效的全局變數和函數, 加一個文件名的前綴。
比如a.c里的
可以定義變數global_1
為a_global_1
這樣不同文件不會重名。

⑶ 在c語言中namespace ex2_1是什麼意思

namespace中文意思是命名空間或者叫名字空間,傳統的C++只有一個全局的namespace,但是由於現在的程序的規模越來越大,程序的分工越來越細,全局作用域變得越來越擁擠,每個人都可能使用相同的名字來實現不同的庫,於是程序員在合並程序的時候就會可能出現名字的沖突。namespace引入了復雜性,解決了這個問題。namespace允許像類,對象,函數聚集在一個名字下。
通常的using namespace std這是標準的命名空間
http://blog.csdn.net/yao_zhuang/article/details/1853625

⑷ 如何讓C具有命名空間

1.最簡單的方法:
publicstaticStringreverse1(Stringstr)
{
returnnewStringBuffer(str).reverse().toString();
}
2.最常用的方法:
publicstaticStringreverse3(Strings)
{
char[]array=s.toCharArray();
Stringreverse="";//注意這是空串,不是null
for(inti=array.length-1;i>=0;i--)
reverse+=array[i];
returnreverse;
}
3.常用方法的變形:
publicstaticStringreverse2(Strings)
{
intlength=s.length();
Stringreverse="";//注意這是空串,不是null
for(inti=0;i<length;i++)
reverse=s.charAt(i)+reverse;//在字元串前面連接,而非常見的後面
returnreverse;
}
4.C語言中常用的方法:
publicstaticStringreverse5(Stringorig)
{
char[]s=orig.toCharArray();
intn=s.length-1;
inthalfLength=n/2;
for(inti=0;i<=halfLength;i++){
chartemp=s[i];
s[i]=s[n-i];
s[n-i]=temp;
}
returnnewString(s);//知道char數組和String相互轉化
}

⑸ VC++關於命名空間的使用

由於C++是由C語言發展而來的,C++保留了C語言中的一些規定,期中之一就是C語言的頭文件用.h作為後綴,在C++開發初期為兼容C語言,許多C++編譯系統保留.h後綴的方法,所以說如果頭文件是#include<iostream.h>的話就不using namespace std;

⑹ 如何用c語言實現CString的構造函數,析構函數和賦值函數

1、首先C語言沒辦法實現構造函數和析構函數,因為C語言是面向過程的語言,沒有定義面向對象的class概念。C++語言是以C語言為基礎擴展出來的一種編程語言,它在繼承了C語言的基礎上,增加了面向對象的編程方法,其中就包含了class。

2、如果你所描述的c語言是指C++語言,那麼是可以自已定義並實現CString類的一些功能。因為CString類是微軟VC++ MFC實現的基礎類,而非C++標准類庫,所以CString類定義中使用了一些AFX函數,依賴於MFC環境,所以想自定義一個完全取代CString的類很困難,也無意義。

3、如果只是需要學習CString的構造函數、析構函數及賦值函數,可以參考MFC類庫源文件:
\MICROSOFT VISUAL STUDIO\VC98\MFC\Include\AFX.INL
\MICROSOFT VISUAL STUDIO\VC98\MFC\SRC\STRCORE.CPP
\MICROSOFT VISUAL STUDIO\VC98\MFC\SRC\WINSTR.CPP

⑺ C++中std命名空間是什麼概念作用是什麼為什麼要引入它,而不像C中的printf那樣呢怎麼實現的啊

首先說一下printf吧,在最早的C語言的時候,由於不是面向對象,所以所有的函數都是唯一的!也就是說你列印的話,就必然會使用printf函數,當然了,你也可以操作更底層的代碼,但是一般人不會那麼乾的,所以PRINTF就屬於唯一的函數。
後來C++出現了,並且出現了STL或者一些其他面向對象的概念和函數。那麼就會出現你寫的函數和系統提供的函數會發生沖突,例如你可以自己寫一個sort()函數來進行排序,但是STL裡面也提供了sort()函數進行排序。並且如果你調用sort()函數的話,那麼系統到底是調用你寫的函數呢,還是調用STL的函數呢?這就需要到命名空間了。
如果你直接sort()的話,那麼可能是調用你寫的函數。
但是如果你std::sort()的話,就是調用STL中的排序函數。

命名空間說白了,就是有多個同名函數,或者變數。用命名空間來區分這些同名的變數和函數。

⑻ c++命名空間是干什麼用的

c++ 中引入namespace(名字空間)的概念,主要是為了減少名字沖突的問題,隨著源代碼規模的增大,產生名字沖突的可能性也會越來越高,如兩家公司的類庫中都有一個名為「Stack」的類,那麼當你需要同時用到這兩個公司的類庫時,就會產生名字沖突,無法區分是哪一個Stack,因此,一般公司都會把自己的類,函數,變數等放在一個名字空間中,防止沖突,比如:
namespace s1
{
int a = 10;
}

namespace s2
{
int a = 20;

}

這樣就在兩個名字空間中聲明了兩個不同的變數 a,
如果想要同時在一個源文件中使用這兩個 a,可以這樣做:
int c = s1::a; // 表示 s1 中的 a
int d = s2::a; // 表示 s2 中的 a

⑼ C++的using namespace std表示什麼意思為什麼C語言沒有這句話

是命名空間的意思,這樣編譯器在編譯的時候相當於每個變數都是 命名空間+變數名,這樣就可以在不同命名空間里,起同樣的變數名,防止變數名用盡或者沖突。C語言沒有命名空間,C和C++其實是兩門語言,盡量按照他們是兩門不同語言的思路來學習比較好。

⑽ c語言變數名的命名規則是什麼

c語言變數名規則是:

1、變數名以英文字母開頭。

2、變數名中的字母是區分大小寫的。

3、變數名不能是關鍵字。

4、變數名中不能包含空格、標點符號和類型說明符。

變數是在C語言的基本語法對象。語言本身的變數名,依賴范圍(可變的源代碼文件和函數,狹窄的命名空間)唯一標識一個變數。變數名是一個標識符在C語言中,用來區分不同變數的語義。

定義:

C語音可以明確地解決分配在編譯的語法對象稱為左值。 &運算符的左值的地址。變數在編譯時將被分配到一個IP地址是屬於左值。如定義字元A,INT B,你和一個char型變數,b表示一個int變數b的地址。

大小(字元)==1,char變數佔用一個位元組,一個地址變數實際上是一個運行周期所佔用,而內容的存儲單元地址和一個值。是sizeof(int)> 1(通常是32位環境中,4)的B&B本身所佔用的地址空間不說,但簡單的1個位元組之一。