ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

C°²È«ÎÊÌâÓëÖ¸ÕëÎóÓÃ(Ò»)
2015-01-22 20:56:56 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:39´Î
Tags£º°²È« ÎÊÌâ Ö¸Õë ÎóÓÃ
Ö¸ÕëµÄÉùÃ÷Óë³õʼ»¯
1¡¢²»Ç¡µ±µÄÖ¸ÕëÉùÃ÷
?
¿¼ÂÇÈçϵÄÉùÃ÷£º
?
int* ptr1, ptr2; // ptr1ΪָÕ룬ptr2ΪÕûÊý
ÕýÈ·µÄд·¨ÈçÏ£º
?
int* ptr1, *ptr2;
ÓÃÀàÐͶ¨Òå´úÌæºê¶¨ÒåÊÇÒ»¸öºÃµÄϰ¹ß£¬ÀàÐͶ¨ÒåÔÊÐí±àÒëÆ÷¼ì²é×÷ÓÃÓò¹æÔò£¬¶øºê¶¨Òå²»Ò»¶¨»á¡£
?
ʹÓú궨Ò帨ÖúÉùÃ÷±äÁ¿£¬ÈçÏÂËùʾ:
?
#define PINT int*
PINT ptr1, ptr2;
²»¹ý½á¹ûºÍÇ°ÃæËù˵µÄÒ»Ö£¬¸üºÃµÄ·½·¨ÊÇʹÓÃÏÂÃæµÄÀàÐͶ¨Ò壺
?
typedef int* PINT;
PINT ptr1, ptr2;
2¡¢Ê¹ÓÃÖ¸Õëδ³õʼ»¯
?
ÔÚʹÓÃÖ¸Õë֮ǰδ³õʼ»¯»áµ¼ÖÂÔËÐÐʱ´íÎó£¬ÈçÏÂÃæµÄ´úÂ룺
?
int* p;
...
printf("%d\n", *p);
Ö¸Õëpδ±»³õʼ»¯£¬¿ÉÄܺ¬ÓÐÀ¬»øÊý¾Ý
?
3¡¢´¦Àíδ³õʼ»¯Ö¸Õë
?
×ÜÊÇÓÃNULLÀ´³õʼ»¯Ö¸Õë
ÓÃassertº¯Êý
ÓõÚÈý·½¹¤¾ß
°ÑÖ¸Õë³õʼ»¯ÎªNULL¸üÈÝÒ×¼ì²éÊÇ·ñʹÓÃÕýÈ·£¬¼´±ãÕâÑù£¬¼ì²é¿ÕÖµÒ²±È½ÏÂé·³£¬ÈçÏÂËùʾ£º
?
int *pi = NULL;
...
if(pi == NULL) {
//²»Ó¦¸Ã½âÒýpi
} else {
//¿ÉÒÔʹÓÃpi
}
ÎÒÃÇ¿ÉÒÔʹÓÃassertº¯ÊýÀ´²âÊÔÖ¸ÕëÊÇ·ñΪ¿ÕÖµ£º
?
assert(pi != NULL);
Ö¸ÕëµÄʹÓÃÎÊÌâ
»º³åÇøÒç³ö
?
»º³åÇøÒç³öÊÇÖ¸µ±¼ÆËã»úÏò»º³åÇøÄÚÌî³äÊý¾ÝλÊýʱ³¬¹ýÁË»º³åÇø±¾ÉíµÄÈÝÁ¿£¬Ê¹µÃÒç³öµÄÊý¾Ý¸²¸ÇÔںϷ¨Êý¾ÝÉÏ£¬ÀíÏëµÄÇé¿öÊdzÌÐò¼ì²éÊý¾Ý³¤¶È²¢²»ÔÊÐíÊäÈ볬¹ý»º³åÇø³¤¶ÈµÄ×Ö·û£¬µ«ÊǾø´ó¶àÊý³ÌÐò¶¼»á¼ÙÉèÊý¾Ý³¤¶È×ÜÊÇÓëËù·ÖÅäµÄ´¢´æ¿Õ¼äÏàÆ¥Å䣬Õâ¾ÍΪ»º³åÇøÒç³öÂñÏÂÒþ»¼¡£²Ù×÷ ϵͳËùʹÓõĻº³åÇøÓÖ±»³ÆÎª"¶ÑÕ»".¡£ÔÚ¸÷¸ö²Ù×÷½ø³ÌÖ®¼ä£¬Ö¸Áî»á±»ÁÙʱ´¢´æÔÚ"¶ÑÕ»"µ±ÖУ¬"¶ÑÕ»"Ò²»á³öÏÖ»º³åÇøÒç³ö¡£
?
ÏÂÃæ¼¸ÖÖÇé¿ö¿ÉÄܵ¼Ö»º³åÇøµÄÒç³ö£º
?
·ÃÎÊÊý×éÔªËØÊ±Ã»Óмì²éË÷ÒýÖµ
?
¶ÔÊý×éÖ¸Õë×öÖ¸ÕëËãÊõÔËËãʱ²»¹»Ð¡ÐÄ
?
ÓÃgetsÕâÑùµÄº¯Êý´Ó±ê×¼ÊäÈë¶ÁÈ¡×Ö·û´®
?
ÎóÓÃstrcpyºÍstrcatÕâÑùµÄº¯Êý
?
1¡¢²âÊÔNULL
?
ʹÓÃmallocÕâÑùµÄº¯ÊýµÄʱºòÒ»¶¨Òª¼ì²é·µ»ØÖµ£¬·ñÔò¿ÉÄܻᵼÖ³ÌÐòµÄ·ÇÕý³£ÖÕÖ¹£¬ÏÂÃæÊÇÒ»°ãµÄ·½·¨£º
?
float *vector = malloc(20 * sizeof(float));
if(vector == NULL) {
? ? //malloc·ÖÅäÄÚ´æÊ§°Ü
} else {
? ? //´¦Àívector
}
2¡¢´íÎóʹÓýâÒý²Ù×÷
?
ÉùÃ÷ºÍ³õʼ»¯Ö¸ÕëµÄ³£Ó÷½·¨ÈçÏ£º
?
int num;
int *pi = #
ÏÂÃæÊÇÒ»ÖÖ¿´ËƵȼ۵«ÊÇ´íÎóµÄÉùÃ÷·½·¨£º
?
int num;
int *pi;
*pi = #
3¡¢ÃÔ;ָÕë
?
²Î¼û¡¶CÃÔ;ָÕë¡·
?
4¡¢Ô½¹ýÊý×é±ß½ç·ÃÎÊÄÚ´æ
?
ûÓÐʲô¿ÉÒÔ×èÖ¹³ÌÐò·ÃÎÊΪÊý×é·ÖÅäµÄ¿Õ¼äÒÔÍâµÄÄڴ棬ÏÂÃæµÄÀý×ÓÖУ¬ÎÒÃÇÉùÃ÷²¢³õʼ»¯ÁËÈý¸öÊý×éÀ´ËµÃ÷ÕâÖÖÐÐΪ£º
?
#include
int main()
{
? ? char firstName[8] = "1234567";
? ? char middleName[8] = "1234567";
? ? char lastName[8] = "1234567";
? ? middleName[-2] = 'X';
? ? middleName[0] = 'X';
? ? middleName[10] = 'X';
? ? printf("%p %s\n", firstName, firstName);
? ? printf("%p %s\n", middleName, middleName);
? ? printf("%p %s\n", lastName, lastName);
? ? return 0;
}
ÔËÐнá¹ûÈçÏ£º
?
?
?
ÏÂͼ˵Ã÷ÁËÄÚ´æ·ÖÅäÇé¿ö£º
?
?
?
5¡¢´íÎó¼ÆËãÊý×鳤¶È
?
½«Êý×é´«¸øº¯Êýʱ£¬Ò»¶¨ÒªÍ¬Ê±´«µÝÊý×鳤¶È£¬Õâ¸öÐÅÏ¢°ïÖúº¯Êý±ÜÃâÔ½¹ýÊý×é±ß½ç
?
#include
void replace(char buffer[], char replacement, size_t size)
{
? ? size_t count = 0;
? ? while(*buffer && count++ < size) {
? ? ? ? *buffer = replacement;
? ? ? ? buffer++;
? ? }
}
int main()
{
? ? char name[8];
? ? strcpy(name, "Alexander");
? ? replace(name, '+', sizeof(name));
? ? printf("%s\n", name);
? ? return 0;
}
6¡¢´íÎóʹÓÃsizeof²Ù×÷·û
?
ÆäÖÐÒ»¸öÀý×ÓÊÇÊÔͼ¼ì²éÖ¸Õë±ß½çµ«·½·¨´íÎó
?
#include
int main()
{
? ? int buffer[20];
? ? int *pbuffer = buffer;
? ? for(int i = 0; i < sizeof(buffer); i++) {
? ? ? ? *(pbuffer++) = 0;
? ? }
? ? return 0;
}
¸ÄΪ£ºi < sizeof(buffer) / sizeof(int);
?
7¡¢ÓнçÖ¸Õë
?
ÓнçÖ¸ÕëÊÇÖ¸Ö¸ÕëµÄʹÓñ»ÏÞÖÆÔÚÓÐЧµÄÇøÓòÄÚ£¬CûÓжÔÕâÀàÖ¸ÕëÌṩֱ½ÓµÄÖ§³Ö£¬µ«ÊÇ¿ÉÒÔ×Ô¼ºÏÔʾµØÈ·±£¡£ÈçÏÂËùʾ:
?
#define SIZE 32
char name[SIZE];
char *p = name;
if(name != NULL) {
? ? if(p >= name && p < name + SIZE) {
? ? ? ? //ÓÐЧָÕ룬¼ÌÐø
? ? } else {
? ? ? ? //ÎÞЧָÕ룬´íÎó·ÖÖ§
? ? }
}
Ò»ÖÖÓÐȤµÄ±ä»¯ÊÇ´´½¨Ò»¸öÖ¸Õë¼ìÑ麯Êý£»
?
ÏÂÃæµÄ´úÂ붨ÒåÒ»¸öº¯ÊýÏû³ýÎÞЧָÕ룺
?
int valid(void *ptr) {
? return (ptr != NULL);
}
ÏÂÃæµÄ´úÂëÒÀÀµÓÚ_etextµÄµØÖ·£¬¶¨ÒåÓںܶàµÄÀàlinux²Ù×÷ϵͳ£¬ÔÚ windowsÉÏÎÞЧ£º
?
#include
#include
?
int valid(void *p) {
? extern char _etext;
? return (p != NULL) && ((char*) p > &_etext);
}
?
int global;
?
int main(void) {
? int local;
?
? printf("pointer to local var valid? %d\n", valid(&local));
? printf("pointer to static var valid? %d\n", valid(&global));
? printf("pointer to fun
Ê×Ò³ ÉÏÒ»Ò³ 1 2 ÏÂÒ»Ò³ βҳ 1/2/2
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºObjective¨DCÖеÄÅÅÐò¼°CompareÏ.. ÏÂһƪ£º³£¼ûÅÅÐòcÓïÑÔʵÏÖ

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ: