锘??xml version="1.0" encoding="utf-8" standalone="yes"?> *****浠ヤ笅鏄弬鑰冮儴鍒?**** 姝ら儴鍒嗗弬鑰冭嚜錛?a >http://blog.sina.com.cn/u/572f7666010008dm 鐢ㄩ斾竴錛?/p>
瀹氫箟涓縐嶇被鍨嬬殑鍒悕錛岃屼笉鍙槸綆鍗曠殑瀹忔浛鎹€傚彲浠ョ敤浣滃悓鏃跺0鏄庢寚閽堝瀷鐨勫涓璞°傛瘮濡傦細 char* pa, pb; // 榪欏鏁頒笉絎﹀悎鎴戜滑鐨勬剰鍥撅紝瀹冨彧澹版槑浜嗕竴涓寚鍚戝瓧絎﹀彉閲忕殑鎸囬拡錛?/p>
// 鍜屼竴涓瓧絎﹀彉閲忥紱 浠ヤ笅鍒欏彲琛岋細 typedef char* PCHAR; PCHAR pa, pb; 鐢ㄩ斾簩錛?/p>
鐢ㄥ湪鏃х殑C浠g爜涓紝甯姪struct銆備互鍓嶇殑浠g爜涓紝澹版槑struct鏂板璞℃椂錛屽繀欏昏甯︿笂struct錛屽嵆褰㈠紡涓猴細 struct 緇撴瀯鍚嶅璞″悕錛屽錛?/p>
struct tagPOINT1 { int y; }; struct tagPOINT1 p1; typedef struct tagPOINT POINT p1; // 榪欐牱灝辨瘮鍘熸潵鐨勬柟寮忓皯鍐欎簡涓涓猻truct錛屾瘮杈冪渷浜嬶紝灝ゅ叾鍦ㄥぇ閲忎嬌鐢ㄧ殑鏃跺?/p>
鎴栬錛屽湪C++涓紝typedef鐨勮繖縐嶇敤閫斾簩涓嶆槸寰堝ぇ錛屼絾鏄悊瑙d簡瀹冿紝瀵規(guī)帉鎻′互鍓嶇殑鏃т唬鐮佽繕鏄湁甯姪鐨勶紝姣曠珶鎴戜滑鍦ㄩ」鐩腑鏈夊彲鑳戒細閬囧埌杈冩棭浜涘勾浠i仐鐣欎笅鏉ョ殑浠g爜銆?/p>
鐢ㄩ斾笁錛?/p>
鐢╰ypedef鏉ュ畾涔変笌騫沖彴鏃犲叧鐨勭被鍨嬨?/p>
姣斿瀹氫箟涓涓彨 REAL 鐨勬誕鐐圭被鍨嬶紝鍦ㄧ洰鏍囧鉤鍙頒竴涓婏紝璁╁畠琛ㄧず鏈楂樼簿搴︾殑綾誨瀷涓猴細 typedef long double REAL; 鍦ㄤ笉鏀寔 long double 鐨勫鉤鍙頒簩涓婏紝鏀逛負錛?/p>
typedef double REAL; 鍦ㄨ繛 double 閮戒笉鏀寔鐨勫鉤鍙頒笁涓婏紝鏀逛負錛?/p>
typedef float REAL; 涔熷氨鏄錛屽綋璺ㄥ鉤鍙版椂錛屽彧瑕佹敼涓?typedef 鏈韓灝辮錛屼笉鐢ㄥ鍏朵粬婧愮爜鍋氫換浣曚慨鏀廣?/p>
鏍囧噯搴撳氨騫挎硾浣跨敤浜嗚繖涓妧宸э紝姣斿size_t銆?/p>
鍙﹀錛屽洜涓簍ypedef鏄畾涔変簡涓縐嶇被鍨嬬殑鏂板埆鍚嶏紝涓嶆槸綆鍗曠殑瀛楃涓叉浛鎹紝鎵浠ュ畠姣斿畯鏉ュ緱紼沖仴銆?/p>
鐢ㄩ斿洓錛? 涓哄鏉傜殑澹版槑瀹氫箟涓涓柊鐨勭畝鍗曠殑鍒悕銆傛柟娉曟槸錛氬湪鍘熸潵鐨勫0鏄庨噷閫愭鐢ㄥ埆鍚嶆浛鎹竴閮ㄥ垎澶嶆潅澹版槑錛屽姝ゅ驚鐜紝鎶婂甫鍙橀噺鍚嶇殑閮ㄥ垎鐣欏埌鏈鍚庢浛鎹紝寰楀埌鐨勫氨鏄師澹版槑鐨勬渶綆鍖栫増銆備婦渚嬶細 鍘熷0鏄庯細void (*b[10]) (void (*)()); 鍙橀噺鍚嶄負b錛屽厛鏇挎崲鍙寵竟閮ㄥ垎鎷彿閲岀殑錛宲FunParam涓哄埆鍚嶄竴錛?/p>
typedef void (*pFunParam)(); 鍐嶆浛鎹㈠乏杈圭殑鍙橀噺b錛宲Funx涓哄埆鍚嶄簩錛?/p>
typedef void (*pFunx)(pFunParam); 鍘熷0鏄庣殑鏈綆鍖栫増錛?/p>
pFunx b[10]; 鍘熷0鏄庯細doube(*)() (*e)[9]; 鍙橀噺鍚嶄負e錛屽厛鏇挎崲宸﹁竟閮ㄥ垎錛宲Funy涓哄埆鍚嶄竴錛?/p>
typedef double(*pFuny)(); 鍐嶆浛鎹㈠彸杈圭殑鍙橀噺e錛宲FunParamy涓哄埆鍚嶄簩 typedef pFuny (*pFunParamy)[9]; 鍘熷0鏄庣殑鏈綆鍖栫増錛?/p>
pFunParamy e; 鐞嗚В澶嶆潅澹版槑鍙敤鐨?#8220;鍙沖乏娉曞垯”錛氫粠鍙橀噺鍚嶇湅璧鳳紝鍏堝線鍙籌紝鍐嶅線宸︼紝紕板埌涓涓渾鎷彿灝辮皟杞槄璇葷殑鏂瑰悜錛涙嫭鍙峰唴鍒嗘瀽瀹屽氨璺沖嚭鎷彿錛岃繕鏄寜鍏堝彸鍚庡乏鐨勯『搴忥紝濡傛寰幆錛岀洿鍒版暣涓0鏄庡垎鏋愬畬銆備婦渚嬶細 int (*func)(int *p); 棣栧厛鎵懼埌鍙橀噺鍚峟unc錛屽闈㈡湁涓瀵瑰渾鎷彿錛岃屼笖宸﹁竟鏄竴涓?鍙鳳紝榪欒鏄巉unc鏄竴涓寚閽堬紱鐒跺悗璺沖嚭榪欎釜鍦嗘嫭鍙鳳紝鍏堢湅鍙寵竟錛屽張閬囧埌鍦嗘嫭鍙鳳紝榪欒鏄?*func)鏄竴涓嚱鏁幫紝鎵浠unc鏄竴涓寚鍚戣繖綾誨嚱鏁扮殑鎸囬拡錛屽嵆鍑芥暟鎸囬拡錛岃繖綾誨嚱鏁板叿鏈塱nt*綾誨瀷鐨勫艦鍙傦紝榪斿洖鍊肩被鍨嬫槸int銆?/p>
int (*func[5])(int *); func鍙寵竟鏄竴涓猍]榪愮畻絎︼紝璇存槑func鏄叿鏈?涓厓绱犵殑鏁扮粍錛沠unc鐨勫乏杈規(guī)湁涓涓?錛岃鏄巉unc鐨勫厓绱犳槸鎸囬拡錛堟敞鎰忚繖閲岀殑*涓嶆槸淇グfunc錛岃屾槸淇グfunc[5]鐨勶紝鍘熷洜鏄痆]榪愮畻絎︿紭鍏堢駭姣?楂橈紝func鍏堣窡[]緇撳悎錛夈傝煩鍑鴻繖涓嫭鍙鳳紝鐪嬪彸杈癸紝鍙堥亣鍒板渾鎷彿錛岃鏄巉unc鏁扮粍鐨勫厓绱犳槸鍑芥暟綾誨瀷鐨勬寚閽堬紝瀹冩寚鍚戠殑鍑芥暟鍏鋒湁int*綾誨瀷鐨勫艦鍙傦紝榪斿洖鍊肩被鍨嬩負int銆?/p>
*****浠ヤ笂涓哄弬鑰冮儴鍒嗭紝浠ヤ笅涓烘湰浜洪鎮(zhèn)熼儴鍒?**** 浣跨敤紺轟緥錛?/p>
1.姣旇緝涓錛?/p>
#include <iostream> using namespace std; typedef int (*A) (char, char); int ss(char a, char b) { cout<<"鍔熻兘1"<<endl; cout<<a<<endl; cout<<b<<endl; return 0; } int bb(char a, char b) { cout<<"鍔熻兘2"<<endl; cout<<b<<endl; cout<<a<<endl; return 0; } void main() { A a; a = ss; a('a','b'); a = bb; a('a', 'b'); } 2.姣旇緝浜岋細 typedef int (A) (char, char); void main() { A *a; a = ss; a('a','b'); a = bb; a('a','b'); } 涓や釜紼嬪簭鐨勭粨鏋滈兘涓鏍鳳細 鍔熻兘1 a b 鍔熻兘2 b a *****浠ヤ笅鏄弬鑰冮儴鍒?**** 鍙傝冭嚜錛?a >http://blog.hc360.com/portal/personShowArticle.do?articleId=57527 typedef 涓?#define鐨勫尯鍒細 妗堜緥涓錛?/p>
閫氬父璁詫紝typedef瑕佹瘮#define瑕佸ソ錛岀壒鍒槸鍦ㄦ湁鎸囬拡鐨勫満鍚堛傝鐪嬩緥瀛愶細 typedef char *pStr1; #define pStr2 char *; pStr1 s1, s2; pStr2 s3, s4; 鍦ㄤ笂榪扮殑鍙橀噺瀹氫箟涓紝s1銆乻2銆乻3閮借瀹氫箟涓篶har *錛岃宻4鍒欏畾涔夋垚浜哻har錛屼笉鏄垜浠墍棰勬湡鐨勬寚閽堝彉閲忥紝鏍規(guī)湰鍘熷洜灝卞湪浜?define鍙槸綆鍗曠殑瀛楃涓叉浛鎹㈣宼ypedef鍒欐槸涓轟竴涓被鍨嬭搗鏂板悕瀛椼?/p>
妗堜緥浜岋細 涓嬮潰鐨勪唬鐮佷腑緙栬瘧鍣ㄤ細鎶ヤ竴涓敊璇紝浣犵煡閬撴槸鍝釜璇彞閿欎簡鍚楋紵 typedef char * pStr; char string[4] = "abc"; const char *p1 = string; const pStr p2 = string; p1++; p2++; 銆銆鏄痯2++鍑洪敊浜嗐傝繖涓棶棰樺啀涓嬈℃彁閱掓垜浠細typedef鍜?define涓嶅悓錛屽畠涓嶆槸綆鍗曠殑鏂囨湰鏇挎崲銆備笂榪頒唬鐮佷腑const pStr p2騫朵笉絳変簬const char * p2銆俢onst pStr p2鍜宑onst long x鏈川涓婃病鏈夊尯鍒紝閮芥槸瀵瑰彉閲忚繘琛屽彧璇婚檺鍒訛紝鍙笉榪囨澶勫彉閲弍2鐨勬暟鎹被鍨嬫槸鎴戜滑鑷繁瀹氫箟鐨勮屼笉鏄郴緇熷浐鏈夌被鍨嬭屽凡銆傚洜姝わ紝const pStr p2鐨勫惈涔夋槸錛氶檺瀹氭暟鎹被鍨嬩負char *鐨勫彉閲弍2涓哄彧璇伙紝鍥犳p2++閿欒銆?/p>
int x;
鑰屽湪C++涓紝鍒欏彲浠ョ洿鎺ュ啓錛氱粨鏋勫悕瀵硅薄鍚嶏紝鍗籌細tagPOINT1 p1;
{
int x;
int y;
}POINT;
#import <netinet/in.h>
#import <netdb.h>
#import <SystemConfiguration/SystemConfiguration.h>
#pragma mark -
#pragma mark DNS瑙f瀽鍜岀綉緇滄祴璇?br>-(NSString*) getAddressFromArray:(CFArrayRef) addresses
{
struct sockaddr *addr;
char ipAddress[INET6_ADDRSTRLEN];
CFIndex index, count;
int err;
assert(addresses != NULL);
count = CFArrayGetCount(addresses);
for (index = 0; index < count; index++) {
addr = (struct sockaddr *)CFDataGetBytePtr(CFArrayGetValueAtIndex(addresses, index));
assert(addr != NULL);
/* getnameinfo coverts an IPv4 or IPv6 address into a text string. */
err = getnameinfo(addr, addr->sa_len, ipAddress, INET6_ADDRSTRLEN, NULL, 0, NI_NUMERICHOST);
if (err == 0) {
NSLog(@"瑙f瀽鍒癷p鍦板潃錛?s\n", ipAddress);
} else {
NSLog(@"鍦板潃鏍煎紡杞崲閿欒錛?d\n", err);
}
}
return [[[NSString alloc] initWithFormat:@"%s",ipAddress] autorelease];//榪欓噷鍙繑鍥炴渶鍚庝竴涓紝涓鑸涓哄彧鏈変竴涓湴鍧
}
-(bool)getReachability:(CFDataRef) data withNameOrAddress:(CFStringRef) nameOrAddress
{
SCNetworkConnectionFlags *flags;
CFIndex length;
char *input;
Boolean success;
assert(data != NULL);
assert(nameOrAddress != NULL);
/* CFStringGetMaximumSizeForEncoding determines max bytes a string of specified length will take up if encoded. */
length = CFStringGetMaximumSizeForEncoding(CFStringGetLength(nameOrAddress), kCFStringEncodingASCII);
input = malloc(length + 1);
assert(input != NULL);
success = CFStringGetCString(nameOrAddress, input, length + 1, kCFStringEncodingASCII);
assert(success);
flags = (SCNetworkConnectionFlags *)CFDataGetBytePtr(data);
assert (flags != NULL);
/* If you only have a PPP interface enabled, the flags will be 0 because of a bug. <rdar://problem/3627771> */
if (*flags == 0) NSLog(@"%s -> Reachability Unknown\n", input);
if (*flags & kSCNetworkFlagsTransientConnection) NSLog(@"%s -> Transient Connection\n", input);
if (*flags & kSCNetworkFlagsReachable) {
NSLog(@"%s -> Reachable\n", input);
success = YES;
}else {
success = NO;
}
if (*flags & kSCNetworkFlagsConnectionRequired) NSLog(@"%s -> Connection Required\n", input);
if (*flags & kSCNetworkFlagsConnectionAutomatic) NSLog(@"%s -> Connection Automatic\n", input);
if (*flags & kSCNetworkFlagsInterventionRequired) NSLog(@"%s -> Intervention Required\n", input);
if (*flags & kSCNetworkFlagsIsLocalAddress) NSLog(@"%s -> Is Local Address\n", input);
if (*flags & kSCNetworkFlagsIsDirect) NSLog(@"%s -> Is Direct\n", input);
free(input);
return success;
}
-(void) serverResoluton{
CFStringRef hostName = (CFStringRef)self.serverInfo.serverAddress;
CFHostRef host;
CFStreamError error;
Boolean success;
CFArrayRef addressArray;
CFDataRef ReachableData;
assert(hostName != NULL);
/* Creates a new host object with the given name. */
host = CFHostCreateWithName(kCFAllocatorDefault, hostName);
assert(host != NULL);
success = CFHostStartInfoResolution(host, kCFHostAddresses, &error);
if (!success) {
NSLog(@"CFHostStartInfoResolution 榪斿洖閿欒 (%d, %ld)", error.domain, error.error);//濡傛灉瑙f瀽鍦板潃澶辮觸錛屼嬌鐢ㄧ洿鎺ユ寚瀹欼P
NSLog(@"鍚敤鐩存帴鎸囧畾IP錛?@",self.serverInfo.serverIPAddress);
[self.serverInfo.serverAddress release];
self.serverInfo.serverAddress = self.serverInfo.serverIPAddress;
}else {
addressArray = CFHostGetAddressing(host, nil);
[self.serverInfo.serverAddress release];
self.serverInfo.serverAddress = [[NSString alloc] initWithFormat:@"%@",[self getAddressFromArray:addressArray]];
NSLog(@"鏇挎崲鍦板潃涓猴細%@", self.serverInfo.serverAddress);
}
//浣跨敤鏂板湴鍧鏉ョ‘璁ゅ彲榪炴帴鎬?/span>
hostName = (CFStringRef)self.serverInfo.serverAddress;
host = CFHostCreateWithName(kCFAllocatorDefault, hostName);
success = CFHostStartInfoResolution(host, kCFHostReachability, &error);
if (!success) {
NSLog(@"CFHostStartInfoResolution 榪斿洖閿欒 (%d, %ld)", error.domain, error.error);
//鏆備笉鐭ュ埌榪欓噷浼氬湪浠涔堟儏鍐典笅鍙戠敓
}else {
ReachableData = CFHostGetReachability(host, nil);
success = [self getReachability:ReachableData withNameOrAddress:(CFStringRef)hostName];
if (!success) {
[self.serverInfo.serverAddress release];
self.serverInfo.serverAddress = self.serverInfo.serverAddressBak;//鍦ㄨ繖閲屾坊鍔犲鐢ㄦ湇鍔″櫒
}
}
}
]]>
NSLog( @"%d", i );鍙傛暟綾誨瀷鐨勫尮閰嶆牸寮忓涓?/p>