¼±ÎʸöcµÄÃæÊÔÌâ
C/C++ code:
void p1(const char **pname)
{
const char *name = "test1";
*pname = name;
}
void p2(const char **pname)
{
char *name = "test2";
*pname = name;
}
void p3(const char **pname)
{
char name[] = "test3";
*pname = name;
}
int main()
{
const char *name;
p1(&name);
printf("%s\n",name);
p2(&name);
printf("%s\n",name);
p3(&name);
printf("%s\n",name);
return 0;
}
´ð°¸ÊÇ test1 ºÍ test2¶¼ÄÜ´òÓ¡³öÀ´ test3²»ÄÜ´òÓ¡ÊÇgarbage
˵string¡°test1¡±ºÍ"test2"¶¼ÊÇglobal allocated onstatant
string"test3"ÊÇÔÚstackÉϵÄ
ÎÒ¾õµÃÕâ¸ö²»¶Ô°É~~
mainÀïÃæµÄconst char*name; ¼ÈÈ»const ¶¨ÒåµÄʱºò¾ÍÓ¦¸ÃÂíÉϸ³Öµ°É~
ÎÒ¾õµÃ"test1","test2","test3" ¶¼ÊÇÔÚstackÉϵÄ
Çë¸ßÈËÖ¸µã
лл
p1 p2ÖеÄname¶¼ÊÇÖ¸Õ룬ָÏòÁ˳£Á¿×Ö·û´®£¬Õâ¸öµØÖ·ÊÇÈ«¾ÖµÄ£¬²»»áÏú»Ù¡£
p3ÖÐnameÊǸöÊý×飬ÔÚstackÖУ¬²¢Óó£Á¿×Ö·û´®¸³Öµ¡£nameµÄµØÖ·²»Êdz£Á¿×Ö·û´®µÄµØÖ·£¬ËùÒÔº¯ÊýÍ˳öºóÏú»ÙÁË¡£
ȷʵ¿ÉÒÔ´ò³öÀ´£¬Ö¸ÕënameÊÇÔÚstackÉÏ£¬µ«¡°test1","test2"ÕâЩ×Ö·û´®ÊÇÔÚ¾²Ì¬´æÖüÇø
ËùÓеÄ×Ö·û´®×ÖÃæÖµ¶¼ÊÇ·ÖÅäÔÚ³£Á¿ÇøµÄ£¬ÕâÈý¸ö¶¼ÊÇÔÚ³£Á¿ÇøµÄ£¬Ç°Á½¸öÊǶ¨ÒåÖ¸ÕëÖ±½ÓÖ¸ÏòÕâ¿é³£Á¿Çø£¬ËùÒÔÄÜ´ò³öÀ´£¬µÚÈý¸öÊÇÏÈ·ÖÅäÒ»¸öÊý×éÈ»º
Ïà¹ØÎÊ´ð£º
#include <string.h>
#include <stdio.h>
void main()
{
int i;
char buf[]="abcde";
strncpy(buf,"abc",3);
for(i=0;i <5;i++)
printf(&q ......
ÔÚueÖдÓÔ¶³ÌunixÓöþ½øÖÆ·½Ê½ÏÂÔØcÎļþµ½±¾µØ£¬ÐÞ¸ÄÖ®ºóÓöþ½øÖÆ·½Ê½ÉÏ´«µ½unixÖУ¬ÔÙÓÃvi´ò¿ª¸ÃÎļþ£¬Ã¿ÐкóÃæ¾Í»áÓÐÒ»¸ö^MµÄ»»Ðзû£¬Èç¹û²ÉÓÃascii·½Ê½ÏÂÔØ£¬¶þ½øÖÆ·½Ê½ÉÏ´«µÄ»°¾ÍûÓÐ^M£¬ÄÇÇëÎÊÕâÑù»á¶Ô³ÌÐòÎļþ ......
void Main(void)
{
while(1)
{
char aa;
Uart_Printf("\nEnter the 'Y' or 'y' to test:");
& ......
ΪʲôCдµÄDLLÎļþC¡¢PBÄܵ÷ÓÃVB²»Äܵ÷Óã¿
VBÀïΪʲôÓеÄDLLÖ±½Óͨ¹ýÒýÓÿÉÒÔʹÓã¿ÓеÄÐèҪͨ¹ýdeclareÉêÃ÷Íⲿº¯Êý£¿ÕâЩDLLÓÐʲô²î±ð£¿
1¡¢ÎªÊ²Ã´PBÄÜͨ¹ýDECLAREÉùÃ÷¶øVB²»ÐУ¿
2¡¢Èç¹ûÕâ¸ödllÖÐµÄ ......