Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB
ÈÈÃűêÇ©£º c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 ×îÐÂÎÄÕ : c

extern¼°extern ¡°C¡±Ó÷¨

externÊÇC/C++ÓïÑÔÖбíÃ÷º¯ÊýºÍÈ«¾Ö±äÁ¿×÷Ó÷¶Î§£¨¿É¼ûÐÔ£©µÄ¹Ø¼ü×Ö´´Òâ²úÆ·Íø .
Ëü¸æËß±àÒëÆ÷£¬ÆäÉùÃ÷µÄº¯ÊýºÍ±äÁ¿¿ÉÒÔÔÚ±¾Ä£¿é»òÆäËüÄ£¿éÖÐʹÓá£
1¡£¶ÔÓÚextern±äÁ¿À´Ëµ£¬½ö½öÊÇÒ»¸ö±äÁ¿µÄÉùÃ÷£¬Æä²¢²»ÊÇÔÚ¶¨Òå·ÖÅäÄÚ´æ¿Õ¼ä¡£Èç¹û¸Ã±äÁ¿¶¨Òå¶à´Î£¬»áÓÐÁ¬½Ó´íÎó
2¡£Í¨³££¬ÔÚÄ£¿éµÄÍ·ÎļþÖжԱ¾Ä£¿éÌṩ¸øÆäËüÄ£¿éÒýÓõĺ¯ÊýºÍÈ«¾Ö±äÁ¿ÒԹؼü×ÖexternÉùÃ÷¡£Ò²¾ÍÊÇ˵cÎļþÀïÃæ¶¨Ò壬Èç¹û¸Ãº¯Êý»òÕß±äÁ¿Ó뿪·Å¸øÍâÃæ£¬ÔòÔÚhÎļþÖÐÓÃextern¼ÓÒÔÉùÃ÷¡£ËùÒÔÍⲿÎļþÖ»ÓÃinclude¸ÃhÎļþ¾Í¿ÉÒÔÁË¡£¶øÇÒ±àÒë½×¶Î£¬ÍâÃæÊÇÕÒ²»µ½¸Ãº¯ÊýµÄ£¬µ«ÊDz»±¨´í¡£link½×¶Î»á´Ó¶¨ÒåÄ£¿éÉú³ÉµÄÄ¿±ê´úÂëÖÐÕÒµ½´Ëº¯Êý¡£
3¡£Óëextern¶ÔÓ¦µÄ¹Ø¼ü×ÖÊÇstatic£¬±»ËüÐÞÊεÄÈ«¾Ö±äÁ¿ºÍº¯ÊýÖ»ÄÜÔÚ±¾Ä£¿éÖÐʹÓá£
¡¡¡¡±»extern "C"ÐÞÊεıäÁ¿ºÍº¯ÊýÊǰ´ÕÕCÓïÑÔ·½Ê½±àÒëºÍÁ¬½ÓµÄ£»
δ¼Óextern “C”ÉùÃ÷ʱµÄ±àÒ뷽ʽ
¡¡¡¡Ê×ÏÈ¿´¿´C++ÖжÔÀàËÆCµÄº¯ÊýÊÇÔõÑù±àÒëµÄ¡£
¡¡¡¡×÷ΪһÖÖÃæÏò¶ÔÏóµÄÓïÑÔ£¬C++Ö§³Öº¯ÊýÖØÔØ£¬¶ø¹ý³ÌʽÓïÑÔCÔò²»Ö§³Ö¡£º¯Êý±»C++±àÒëºóÔÚ·ûºÅ¿âÖеÄÃû×ÖÓëCÓïÑԵIJ»Í¬¡£ÀýÈ磬¼ÙÉèij¸öº¯ÊýµÄÔ­ÐÍΪ£º 
void foo( int x, int y );
¡¡¡¡¸Ãº¯Êý±»C±àÒëÆ÷ ......

C³ÌÐòÖÐmain²ÎÊýargvºÍargc

      ÃüÁîÐнçÃæµÄ³ÌÐò£¬Í¨³£¶¼ÐèÒªÊäÈëÃüÁîÐвÎÊý°ïÖú³ÌÐòÖ´ÐС£mainÊÇ×îµäÐ͵ĴËÀàÓ¦Óã¬mainµÄ²ÎÊý֮ǰ¶¼±»ºöÂÔµôÁË¡£
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
¡¡¡¡ int count;
¡¡¡¡ printf("The command line has %d arguments:\n", argc - 1);  //ÅųýµÚÒ»¸ö£¬ËùÒÔ¼õ1
¡¡¡¡ for(count = 1; count < argc; count++)
¡¡¡¡ {
¡¡¡¡        printf("%d: %s\n", count, argv[count]);
¡¡¡¡ }
¡¡¡¡ printf("\n");
¡¡¡¡ return 0;
}
ÕâÀïÏȽâÊÍÒ»ÏÂmain(int argc, char*argv[])Õâ¸öº¯ÊýÖÐÁ½¸ö²ÎÊýµÄÒâÒ壬argc¼Ç¼µÄÊÇÃüÁîÐÐÖÐÊäÈë²ÎÊýµÄÊýÄ¿£¬argvÊÇÒ»¸öÓµÓÐargc¸öÔªËØµÄ×Ö·û´®Êý×飬ÿ¸öÔªËØ±£´æÒ»¸öÃüÁîÐÐÖÐÊäÈëµÄ²ÎÊý¡£
      ±àÒëÕâ¸öÎļþΪ¿ÉÖ´ÐÐÎļþrepeat£ºgcc repeat.c -o repeat£¬°´ÏÂÁз½Ê½Ö´ÐÐ repeat ³ÌÐò£º./repeat I "love you" 3£¬Êä³öÈçÏ£º
The command line has 3 arguments:
¡¡¡¡1: I
¡¡¡¡2: love you
¡¡¡¡3: 3
......

c/c++±ÊÊÔÌâÄ¿(ÁÖÈñ)

±¾ÊÔÌâ½öÓÃÓÚ¿¼²éC++/C³ÌÐòÔ±µÄ»ù±¾±à³Ì¼¼ÄÜ¡£ÄÚÈÝÏÞÓÚC++/C³£ÓÃÓï·¨£¬²»Éæ¼°Êý¾Ý½á¹¹¡¢Ëã·¨ÒÔ¼°Éî°ÂµÄÓï·¨¡£¿¼ÊԳɼ¨ÄÜ·´Ó³³ö¿¼ÉúµÄ±à³ÌÖÊÁ¿ÒÔ¼°¶ÔC++/CµÄÀí½â³Ì¶È£¬µ«²»ÄÜ·´Ó³¿¼ÉúµÄÖÇÁ¦ºÍÈí¼þ¿ª·¢ÄÜÁ¦¡£
±ÊÊÔʱ¼ä90·ÖÖÓ¡£Ç뿼ÉúÈÏÕæ´ðÌ⣬ÇÐÎðÇáÊÓ¡£
Ò»¡¢ÇëÌîдBOOL , float, Ö¸Õë±äÁ¿ Óë“ÁãÖµ”±È½ÏµÄ if Óï¾ä¡££¨10·Ö£©
Ìáʾ£ºÕâÀï“ÁãÖµ”¿ÉÒÔÊÇ0, 0.0 , FALSE»òÕß“¿ÕÖ¸Õ딡£ÀýÈç int ±äÁ¿ n Óë“ÁãÖµ”±È½ÏµÄ if Óï¾äΪ£º
if ( n == 0 )
if ( n != 0 )
ÒÔ´ËÀàÍÆ¡£
¡¡
Çëд³ö BOOL flag Óë“ÁãÖµ”±È½ÏµÄ if Óï¾ä£º
¡¡
Çëд³ö float x Óë“ÁãÖµ”±È½ÏµÄ if Óï¾ä£º
¡¡
Çëд³ö char *p Óë“ÁãÖµ”±È½ÏµÄ if Óï¾ä£º
¡¡
¡¡
¶þ¡¢ÒÔÏÂΪWindows NTϵÄ32λC++³ÌÐò£¬Çë¼ÆËãsizeofµÄÖµ£¨10·Ö£©
char str[] = “Hello” ;
char *p = str ;
int n = 10;
Çë¼ÆËã
sizeof (str ) =
sizeof ( p ) =
sizeof ( n ) =
void Func ( char str[100])
{
Çë¼ÆËã
sizeof( str ) =
}
¡¡
void *p = malloc( 100 );
Çë¼ÆËã
sizeof ( p ) =
......

c/c++±ÊÊÔÌâÄ¿(ÁÖÈñ)

±¾ÊÔÌâ½öÓÃÓÚ¿¼²éC++/C³ÌÐòÔ±µÄ»ù±¾±à³Ì¼¼ÄÜ¡£ÄÚÈÝÏÞÓÚC++/C³£ÓÃÓï·¨£¬²»Éæ¼°Êý¾Ý½á¹¹¡¢Ëã·¨ÒÔ¼°Éî°ÂµÄÓï·¨¡£¿¼ÊԳɼ¨ÄÜ·´Ó³³ö¿¼ÉúµÄ±à³ÌÖÊÁ¿ÒÔ¼°¶ÔC++/CµÄÀí½â³Ì¶È£¬µ«²»ÄÜ·´Ó³¿¼ÉúµÄÖÇÁ¦ºÍÈí¼þ¿ª·¢ÄÜÁ¦¡£
±ÊÊÔʱ¼ä90·ÖÖÓ¡£Ç뿼ÉúÈÏÕæ´ðÌ⣬ÇÐÎðÇáÊÓ¡£
Ò»¡¢ÇëÌîдBOOL , float, Ö¸Õë±äÁ¿ Óë“ÁãÖµ”±È½ÏµÄ if Óï¾ä¡££¨10·Ö£©
Ìáʾ£ºÕâÀï“ÁãÖµ”¿ÉÒÔÊÇ0, 0.0 , FALSE»òÕß“¿ÕÖ¸Õ딡£ÀýÈç int ±äÁ¿ n Óë“ÁãÖµ”±È½ÏµÄ if Óï¾äΪ£º
if ( n == 0 )
if ( n != 0 )
ÒÔ´ËÀàÍÆ¡£
¡¡
Çëд³ö BOOL flag Óë“ÁãÖµ”±È½ÏµÄ if Óï¾ä£º
¡¡
Çëд³ö float x Óë“ÁãÖµ”±È½ÏµÄ if Óï¾ä£º
¡¡
Çëд³ö char *p Óë“ÁãÖµ”±È½ÏµÄ if Óï¾ä£º
¡¡
¡¡
¶þ¡¢ÒÔÏÂΪWindows NTϵÄ32λC++³ÌÐò£¬Çë¼ÆËãsizeofµÄÖµ£¨10·Ö£©
char str[] = “Hello” ;
char *p = str ;
int n = 10;
Çë¼ÆËã
sizeof (str ) =
sizeof ( p ) =
sizeof ( n ) =
void Func ( char str[100])
{
Çë¼ÆËã
sizeof( str ) =
}
¡¡
void *p = malloc( 100 );
Çë¼ÆËã
sizeof ( p ) =
......

linux ³£ÓÃcº¯Êý


opendir£¨´ò¿ªÄ¿Â¼£©
Ïà¹Øº¯Êý
open£¬readdir£¬closedir£¬rewinddir£¬seekdir£¬telldir£¬scandir
±íÍ·Îļþ
#include<sys/types.h>
#include<dirent.h>
¶¨Ò庯Êý
DIR * opendir(const char * name);
º¯Êý˵Ã÷
opendir()ÓÃÀ´´ò¿ª²ÎÊýnameÖ¸¶¨µÄĿ¼£¬²¢·µ»ØDIR*ÐÎ̬µÄĿ¼Á÷£¬ºÍopen()ÀàËÆ£¬½ÓÏÂÀ´¶ÔĿ¼µÄ¶ÁÈ¡ºÍËÑË÷¶¼ÒªÊ¹Óô˷µ»ØÖµ¡£
·µ»ØÖµ
³É¹¦Ôò·µ»ØDIR* ÐÍ̬µÄĿ¼Á÷£¬´ò¿ªÊ§°ÜÔò·µ»ØNULL¡£
´íÎó´úÂë
EACCESS ȨÏÞ²»×ã
EMFILE ÒÑ´ïµ½½ø³Ì¿Éͬʱ´ò¿ªµÄÎļþÊýÉÏÏÞ¡£
ENFILE ÒѴﵽϵͳ¿Éͬʱ´ò¿ªµÄÎļþÊýÉÏÏÞ¡£
ENOTDIR ²ÎÊýname·ÇÕæÕýµÄĿ¼
ENOENT ²ÎÊýname Ö¸¶¨µÄĿ¼²»´æÔÚ£¬»òÊDzÎÊýname Ϊһ¿Õ×Ö·û´®¡£
ENOMEM ºËÐÄÄÚ´æ²»×ã¡£
readdir£¨¶ÁȡĿ¼£©
Ïà¹Øº¯Êý
open£¬opendir£¬closedir£¬rewinddir£¬seekdir£¬telldir£¬scandir
±íÍ·Îļþ
#include<sys/types.h>
#include<dirent.h>
¶¨Ò庯Êý
struct dirent * readdir(DIR * dir);
º¯Êý˵Ã÷
readdir()·µ»Ø²ÎÊýdirĿ¼Á÷µÄϸöĿ¼½øÈëµã¡£
½á¹¹dirent¶¨ÒåÈçÏÂ
struct dirent
{
ino_t d_ino;
ff_t d_off;
signed short int d_reclen;
unsigned ......

linux ³£ÓÃcº¯Êý


opendir£¨´ò¿ªÄ¿Â¼£©
Ïà¹Øº¯Êý
open£¬readdir£¬closedir£¬rewinddir£¬seekdir£¬telldir£¬scandir
±íÍ·Îļþ
#include<sys/types.h>
#include<dirent.h>
¶¨Ò庯Êý
DIR * opendir(const char * name);
º¯Êý˵Ã÷
opendir()ÓÃÀ´´ò¿ª²ÎÊýnameÖ¸¶¨µÄĿ¼£¬²¢·µ»ØDIR*ÐÎ̬µÄĿ¼Á÷£¬ºÍopen()ÀàËÆ£¬½ÓÏÂÀ´¶ÔĿ¼µÄ¶ÁÈ¡ºÍËÑË÷¶¼ÒªÊ¹Óô˷µ»ØÖµ¡£
·µ»ØÖµ
³É¹¦Ôò·µ»ØDIR* ÐÍ̬µÄĿ¼Á÷£¬´ò¿ªÊ§°ÜÔò·µ»ØNULL¡£
´íÎó´úÂë
EACCESS ȨÏÞ²»×ã
EMFILE ÒÑ´ïµ½½ø³Ì¿Éͬʱ´ò¿ªµÄÎļþÊýÉÏÏÞ¡£
ENFILE ÒѴﵽϵͳ¿Éͬʱ´ò¿ªµÄÎļþÊýÉÏÏÞ¡£
ENOTDIR ²ÎÊýname·ÇÕæÕýµÄĿ¼
ENOENT ²ÎÊýname Ö¸¶¨µÄĿ¼²»´æÔÚ£¬»òÊDzÎÊýname Ϊһ¿Õ×Ö·û´®¡£
ENOMEM ºËÐÄÄÚ´æ²»×ã¡£
readdir£¨¶ÁȡĿ¼£©
Ïà¹Øº¯Êý
open£¬opendir£¬closedir£¬rewinddir£¬seekdir£¬telldir£¬scandir
±íÍ·Îļþ
#include<sys/types.h>
#include<dirent.h>
¶¨Ò庯Êý
struct dirent * readdir(DIR * dir);
º¯Êý˵Ã÷
readdir()·µ»Ø²ÎÊýdirĿ¼Á÷µÄϸöĿ¼½øÈëµã¡£
½á¹¹dirent¶¨ÒåÈçÏÂ
struct dirent
{
ino_t d_ino;
ff_t d_off;
signed short int d_reclen;
unsigned ......

C/C++ staticºÍ¿ÉÖØÈë¸ÅÄî

static
C++ÖеÄstatic
¡¡¡¡C++µÄstaticÓÐÁ½ÖÖÓ÷¨£ºÃæÏò¹ý³Ì³ÌÐòÉè¼ÆÖеÄstaticºÍÃæÏò¶ÔÏó³ÌÐòÉè¼ÆÖеÄstatic¡£Ç°ÕßÓ¦ÓÃÓÚÆÕͨ±äÁ¿ºÍº¯Êý£¬²»Éæ¼°ÀࣻºóÕßÖ÷Ҫ˵Ã÷staticÔÚÀàÖеÄ×÷Óá£
¡¡¡¡Ò»¡¢ÃæÏò¹ý³ÌÉè¼ÆÖеÄstatic
¡¡¡¡1¡¢¾²Ì¬È«¾Ö±äÁ¿
¡¡¡¡ÔÚÈ«¾Ö±äÁ¿Ç°£¬¼ÓÉϹؼü×Östatic£¬¸Ã±äÁ¿¾Í±»¶¨Òå³ÉΪһ¸ö¾²Ì¬È«¾Ö±äÁ¿¡£ÎÒÃÇÏȾÙÒ»¸ö¾²Ì¬È«¾Ö±äÁ¿µÄÀý×Ó£¬ÈçÏ£º
¡¡¡¡//Example 1
¡¡¡¡#include <iostream.h>
¡¡¡¡void fn();
¡¡¡¡static int n; //¶¨Ò徲̬ȫ¾Ö±äÁ¿
¡¡¡¡void main()
¡¡¡¡{ n=20;
¡¡¡¡cout<<n<<endl;
¡¡¡¡fn();
¡¡¡¡}
¡¡¡¡void fn()
¡¡¡¡{ n++;
¡¡¡¡cout<<n<<endl;
¡¡¡¡}
¡¡¡¡¾²Ì¬È«¾Ö±äÁ¿ÓÐÒÔÏÂÌØµã£º
¡¡¡¡¸Ã±äÁ¿ÔÚÈ«¾ÖÊý¾ÝÇø·ÖÅäÄڴ棻
¡¡¡¡Î´¾­³õʼ»¯µÄ¾²Ì¬È«¾Ö±äÁ¿»á±»³ÌÐò×Ô¶¯³õʼ»¯Îª0£¨×Ô¶¯±äÁ¿µÄÖµÊÇËæ»úµÄ£¬³ý·ÇËü±»ÏÔʽ³õʼ»¯£©£»
¡¡¡¡¾²Ì¬È«¾Ö±äÁ¿ÔÚÉùÃ÷ËüµÄÕû¸öÎļþ¶¼ÊǿɼûµÄ£¬¶øÔÚÎļþÖ®ÍâÊDz»¿É¼ûµÄ£»
¡¡¡¡¾²Ì¬±äÁ¿¶¼ÔÚÈ«¾ÖÊý¾ÝÇø·ÖÅäÄڴ棬°üÀ¨ºóÃæ½«ÒªÌáµ½µÄ¾²Ì¬¾Ö²¿±äÁ¿¡£¶ÔÓÚÒ»¸öÍêÕûµÄ³ÌÐò£¬ÔÚÄÚ´æÖеķֲ¼Çé¿öÈçÏÂͼ£º
¡¡¡¡´úÂëÇø
¡¡¡¡È«¾ÖÊý¾ÝÇø
¡¡¡¡¶ÑÇø
¡¡¡¡Õ»Ç ......

C/C++ staticºÍ¿ÉÖØÈë¸ÅÄî

static
C++ÖеÄstatic
¡¡¡¡C++µÄstaticÓÐÁ½ÖÖÓ÷¨£ºÃæÏò¹ý³Ì³ÌÐòÉè¼ÆÖеÄstaticºÍÃæÏò¶ÔÏó³ÌÐòÉè¼ÆÖеÄstatic¡£Ç°ÕßÓ¦ÓÃÓÚÆÕͨ±äÁ¿ºÍº¯Êý£¬²»Éæ¼°ÀࣻºóÕßÖ÷Ҫ˵Ã÷staticÔÚÀàÖеÄ×÷Óá£
¡¡¡¡Ò»¡¢ÃæÏò¹ý³ÌÉè¼ÆÖеÄstatic
¡¡¡¡1¡¢¾²Ì¬È«¾Ö±äÁ¿
¡¡¡¡ÔÚÈ«¾Ö±äÁ¿Ç°£¬¼ÓÉϹؼü×Östatic£¬¸Ã±äÁ¿¾Í±»¶¨Òå³ÉΪһ¸ö¾²Ì¬È«¾Ö±äÁ¿¡£ÎÒÃÇÏȾÙÒ»¸ö¾²Ì¬È«¾Ö±äÁ¿µÄÀý×Ó£¬ÈçÏ£º
¡¡¡¡//Example 1
¡¡¡¡#include <iostream.h>
¡¡¡¡void fn();
¡¡¡¡static int n; //¶¨Ò徲̬ȫ¾Ö±äÁ¿
¡¡¡¡void main()
¡¡¡¡{ n=20;
¡¡¡¡cout<<n<<endl;
¡¡¡¡fn();
¡¡¡¡}
¡¡¡¡void fn()
¡¡¡¡{ n++;
¡¡¡¡cout<<n<<endl;
¡¡¡¡}
¡¡¡¡¾²Ì¬È«¾Ö±äÁ¿ÓÐÒÔÏÂÌØµã£º
¡¡¡¡¸Ã±äÁ¿ÔÚÈ«¾ÖÊý¾ÝÇø·ÖÅäÄڴ棻
¡¡¡¡Î´¾­³õʼ»¯µÄ¾²Ì¬È«¾Ö±äÁ¿»á±»³ÌÐò×Ô¶¯³õʼ»¯Îª0£¨×Ô¶¯±äÁ¿µÄÖµÊÇËæ»úµÄ£¬³ý·ÇËü±»ÏÔʽ³õʼ»¯£©£»
¡¡¡¡¾²Ì¬È«¾Ö±äÁ¿ÔÚÉùÃ÷ËüµÄÕû¸öÎļþ¶¼ÊǿɼûµÄ£¬¶øÔÚÎļþÖ®ÍâÊDz»¿É¼ûµÄ£»
¡¡¡¡¾²Ì¬±äÁ¿¶¼ÔÚÈ«¾ÖÊý¾ÝÇø·ÖÅäÄڴ棬°üÀ¨ºóÃæ½«ÒªÌáµ½µÄ¾²Ì¬¾Ö²¿±äÁ¿¡£¶ÔÓÚÒ»¸öÍêÕûµÄ³ÌÐò£¬ÔÚÄÚ´æÖеķֲ¼Çé¿öÈçÏÂͼ£º
¡¡¡¡´úÂëÇø
¡¡¡¡È«¾ÖÊý¾ÝÇø
¡¡¡¡¶ÑÇø
¡¡¡¡Õ»Ç ......

¸ü¸ßЧÂʵÄA^B mod C bird

#include <stdio.h>
#define LL unsigned long long int

inline LL mod(LL a,LL b)
{
while (a>=b)
a-=b;
return a;
}
//a*b mod c
inline LL MulAndMod(LL a, LL shl_b,LL c)
{
LL val,pre;
pre = mod(a,c);
val = 0;
while (shl_b)
{
if (shl_b&0x1)
val = mod(val + pre,c);
shl_b>>=1;
pre = mod(pre<<1,c);
}
return val;
}

inline LL A_BModC(LL a,LL shl_b,LL c)
{

LL val,pre;
if (shl_b&0x1) //¸ù¾Ý2ÏàÓ¦¶þ½øÖÆÎ»µÄÖµÅжÏÊÇ·ñ¼ÓA*2^n£»\\ÒòΪÓжÔb½øÐÐÓÒÒÆÔËË㣬ËùÒÔÿ´ÎÖ»ÐèÅжÏ×îĩλµÄ½á¹û¾Í¿ÉÒÔ¡£
val = mod(a,c);
else
val = 1;
shl_b >>= 1; //¼ÆËã A*2^nµÄÖµ¡£
pre = MulAndMod(a,a,c);
while (shl_b)
{
if (shl_b&0x1)
val = MulAndMod(val,pre,c);
shl_b>>=1;
......
×ܼǼÊý:2015; ×ÜÒ³Êý:336; ÿҳ6 Ìõ; Ê×Ò³ ÉÏÒ»Ò³ [102] [103] [104] [105] 106 [107] [108] [109] [110] [111]  ÏÂÒ»Ò³ βҳ
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ