��ǰλ�ã���ҳ > Ƕ��ʽ��ѵ > Ƕ��ʽѧϰ > ��ʦ���� > Ƕ��ʽc���Ա�����

Ƕ��ʽc���Ա����� ʱ�䣺2019-10-23      ��Դ���������ģ�Ԭ��ʦ

���������˽�һ��Ƕ��ʽc���Եı����⣬���ĵ���Ҫ�������£�

ΪʲôǶ��ʽ��ҵע��C���ԵĿ��죿

���������Ƚ����һ�����⣬ΪʲôǶ��ʽ��ҵע��c���ԵĿ��죿����˵ΪʲôǶ��ʽ������c���Կ���������ô���ֱ��������Ϊʲô����c������Ƕ��ʽ��ҵ����ô�����أ�

c���Գ�ɫ�Ŀ���ֲ�Ժ��ܹ�ֱ�ӷ���Ӳ��ʹ�����dz��ʺ���Ƕ��ʽ��ҵ����ʹ�á���ʵ�ܹ�ֱ�ӷ���Ӳ���������л���C���ԣ����ǻ���������ڵͼ����ԣ��������һЩ���ӵĹ��ܣ����������Ժ�CPU�ļܹ�������أ�X86�ܹ���ARM�ܹ��Ļ������Dz�ͬ�ģ����Υ����Ƕ��ʽ�����п���ֲ��ԭ��Ȼ������C���Է���Ӳ����Ч�ʸ��ߣ����ԣ�һ�㽫Ӳ����ʼ���Ĺ���������࣬�Ƚϸ��ӵIJ�������C���ԡ�

���������������ı�����������޷�ֱ�Ӳ���Ӳ���ľ�����ʹ��c������Ƕ��ʽ���������Ų���ȡ���ĵ�λ�����á�

����Ƕ��ʽC���Ա�����ļ���ר��

��������

1.�ñ���a�����������͵ı���

��1��һ��������

��2��һ��ָ����������ָ��

��3��һ��ָ��ָ�� ��ָ�룬��ָ���ָ��ָ��һ��������

��4��һ����ʮ��������������

��5��һ����10��ָ������飬����Ԫ��ָ��һ��������

��6��һ��ָ����10�������������ָ��

��7��һ��ָ������ָ�룬�ú�����һ�����β���������һ��������

��8��һ����10��ָ������飬������ָ��һ���������ú�����һ�����Ͳ���������һ��������

�𰸣�

��1��int a;

��2��int *a;

��3��int **a;

��4��int a[10];

��5��int *a[10];

��6��int (*a)[10];

��7��int (*a)(int );

��8��int (*a[10])(int );

����:

����������ֿ�����һ�Ǹ���Ҫ���Լ�д��������䣬���Ǹ���������䣬�Լ�д������a�ĺ��塣

����취���ռ���ԭ��ͺ�,���������ṩ�����һ��ͼƬ,��ͼ��������c����������������ȼ���

Ȼ����������ı�����ʲô��Խ�������ʵĶ��������ȼ�Խ�ߣ�ʲô��˼�أ����Ƿ�����������������һ��

һ����10��ָ������飬����Ԫ��ָ��һ�������� �� int *a[10];

һ��ָ����10�������������ָ�룺 int (*a)[10];

ͨ��������������ȼ���ͼƬ����֪�� [] �����ȼ��Ǹ��� * �ģ�����int *a[10];�У�a�ı��������飬Ȼ��������д�ŵ����ݳ�Ա��ָ�룬���ݳ�Աָ������������ݡ�

�ǣ�int (*a)[10]; �أ�������Բ���Ž� *a ��ס����ʾǿ��a�ı�����ָ�����ͣ�aָ��������飬�����ָ���������ʮ�����͵����ݡ�

��������ָ�����������ָ�룬����ٳ����ŷ���һ���������ӵ��������Ϳ��Կ���Ҫ��д�����������߿��Ŷ������д������a�ĺ��塣

 

2.����Ϊ Linux/Windows �µ�32 λC����, �����sizeof ��ֵ

1.void func(char str[100]);  

2.int main(int argc, const char *argv[])  

3.{  

4.    char str[] = "hello";  

5.    char *p = str;  

6.    int n = 10;  

7.    char str_fun[100];  

8.    void*p_malloc = malloc(100);  

9.    printf("sizeof(str) = %d\n",sizeof(str));  

10.    printf("sizeof(p) = %d\n",sizeof(p));  

11.    printf("sizeof(n) = %d\n",sizeof(n));  

12.    func(str_fun);  

13.    printf("sizeof(p_malloc) = %d\n",sizeof(p_malloc));  

14.    return 0;  

15.}  

16.void func(char str[100])  

17.{  

18.    printf("sizeof(str) = %d\n",sizeof(str));  

19.}  

�𰸣�

1.sizeof(str) = 6  

2.sizeof(p) = 4  

3.sizeof(n) = 4  

4.sizeof(str) = 4  

5.sizeof(p_malloc) = 4  

������

���ȵ�һ�������������str���ֽڳ��ȣ�str���ڸ���ֵ��ͬʱȷ���ij����䳤����“hello\0”��6���ַ����ȣ�Ҳ����6���ֽڡ� ​ 

�ڶ����������ָ��p���ֽڳ��ȣ�����ָ��ʲô�������͵�ָ�룬���ֽڳ��ȶ�Ϊ4�� 

����������������ͱ���n���ֽڳ��ȣ���32λϵͳ�£���������ռ4�ֽڡ� 

���ĸ������Ӻ����м�����β�str���ֽڳ��ȣ����ں������β���˵���������黹��ָ�����ı��ʶ���ָ�룬���������ֽڳ���Ϊ4�ֽڡ� ​ 

������������ָ��p_malloc���ֽڳ��ȣ���Ȼ��ָ����һ��100�ֽڴ�С���ڴ�ռ䣬�������ı��ʻ���һ��ָ�룬��Ȼ��4�ֽڡ�

�ؼ��ֺ�Ԥ����

1.static�ؼ�����ʲô���ã�

��

��1���������ڣ�static���������÷�ΧΪ�ú�������ͬ��auto�������ñ������ڴ�ֻ������һ�Σ������ֵ���´ε���ʱ��ά���ϴε�ֵ��

��2����ģ���ڵ�staticȫ�ֱ������Ա�ģ�������к������ʣ������ܱ�ģ���������������ʡ�

��3����ģ���ڵ�static����ֻ���Ա���һģ���ڵ������������ã����������ʹ�÷�Χ����������������ģ���ڡ�

2.const�ؼ�����ʲô����

��

��1������ֹһ���������ı䣬����ʹ��const�ؼ��֣�����ñ���ʱ��ͨ��Ҫ������ʼ������Ϊ�Ժ��û�л�����ȥ�ı����ˡ�

��2������ָ����˵������ָ��ָ�뱾���Ҳ����ָ��ָ����ָ������ݣ������ͬʱָ��Ϊconst��

��3���ں��������У�const���������βΣ���������һ������������ں����ڲ����ܸı���ֵ��

3.const �� # define ����к��ŵ㣿

��

��1��const ���ε�ֻ�����������ض����������ͣ�����û���������ͱ��������Զ�ǰ�߽������Ͱ�ȫ��飬���Ժ���ֻ�����ַ��滻��û�����Ͱ�ȫ���

��2��������ͨ����Ϊ��ͨconstֻ����������洢�ռ䣬���ǽ����DZ����ڷ��ű��У���ʹ����Ϊһ�������ڼ��֪��û���˴洢�ڶ��ڴ�IJ�����ʹ����Ч�ʸ���

4.ö����# define�����������Щ��

��

ö�����ĸ��� ​

(1)ö�٣���ָ��������ֵһһ�оٳ�����������ֵֻ�����оٳ�����ֵ�ķ�Χ�� ​ 

(2) # define�궨������һ��ָ���ı�ʶ��������һ���ַ���

ö����# define������� ​ 

(1)�ڱ������п��Ե���ö�ٱ��������ܵ��Ժ곣�� ​ 

(2)# define�곣������Ԥ����׶ν��м��滻��ö�ٳ��������ڱ����ʱ���ȷ�� ��ֵ ​ 

(3) ö�ٿ���һ�ζ��������صij�������# define��һ��ֻ�ܶ���һ��

5.typedef��#define�������֮���벻֮ͬ����ʲô��

��

(1)����֮����ͨ�����������ΪΪһ���ַ���������ڳ�������һ���µ��ַ�����ԭ�е��ַ� ​ 

(2)���� ​

a.ʵ�ʺ��岻ͬ��# define���ַ����滻��typedef��Ϊ��������һ����

b. �궨��ľ�βû�зֺ���Ϊ������־���䱾������ڱ�������н��У�������Ԥ��������о��Ѿ�����˺��ѷ���DZ�ڵĴ���

ָ��Ͷδ���

1.ָ�롢����͵�ַ֮��Ĺ�ϵ�ǵ�ʲô��

��

��1�������DZ�����һƬ�����ڴ浥Ԫ�еģ���������������Ƭ�����ڴ浥Ԫ���׵�ַ���ڴ� ��Ԫ�ĵ�ַ����ָ�룬���������Ҳ��һ��ָ�롣

��2���������ɶ������Ԫ����ɣ�Ԫ�ذ����������͵IJ�ͬ����ռ�����ڴ�Ĵ�СҲ��ͬ��һ�������Ԫ�ص��׵�ַ��������ռ�����ڴ浥Ԫ���׵�ַ��

��3��ָ������ȿ���ָ��һ�����飬Ҳ����ָ��һ������Ԫ�ء���������������ĵ�һ��Ԫ�صĵ�ַ����ָ�룬ָ���ָ����һ�����顣�����ʹָ�����ָ���i��Ԫ�أ��Ϳ��԰�iԪ���׵�ַ��������

2.�����ָ���ʾ��ά����

��

�ٸ����ӣ�����a�Ƕ�ά��������a����������ά������׵�ַ

��ôa+i��a[i]��(a+i)��&a i �ǵ�ͬ�ģ�​ 

a[i]+j=(*(a+i)+j)��Ԫ�ص�ֵ����*��*��a+i��+j��

3.����ָ�����Ӧ����һά���飿

��

int a=[10],*p1,**p2,i;

p1=a;

p2=&p1;

a[i]=*(*p2+i)=* (p1+i)=*(a+i)

�ַ�����غ���

1.size_t strlen(const char *s); 

���ܣ������ַ������� 

������ s���ַ����� 

����ֵ�������ַ���ʵ�ʳ��ȣ�������‘\0’����

1.//�Լ�ʵ��

2.int my_strlen(const char *s)  

3.{  

4.    char * sc;  

5.    for (sc = s; *sc != '\0'; ++sc);  

6.    return sc - s;  

7.}  

 

2.char *strcpy(char *dest, const char *src); 

���ܣ���src�����ݸ��Ƶ�dest���� 

������ dest��Ŀ���ַ����� src��Դ���ַ����� 

����ֵ�� ���ƺ���ַ����� 

˵����dest�ַ�����1�����㹻�� 

����ǰ,��������‘\0’����;���Ӻ�,dest��‘\0’ȡ��,�´�����‘\0’

1.//�Լ�ʵ��  

2.char *my_strcpy(char *dest, const char *src)  

3.{  

4.    int i;  

5.    while(src[i] != '\0')  

6.    {  

7.        dest[i] = src[i];  

8.        i++;  

9.    }  

10.  

11.    dest[i] = '\0';  

12.    return dest;  

13.}  

 

 

3.char *strcat(char *dest, const char *src); 

���ܣ� ��src������׷�ӵ�dest���� 

������ dest��Ŀ���ַ����� src��Դ���ַ����� 

����ֵ�� ͬ���յ�dest 

˵�����ַ�����1�����㹻�� 

����ǰ,��������‘\0’����;���Ӻ�,��1��‘\0’ȡ��,�´�����‘\0’

 

1.//�Լ�ʵ��  

2.char *strcat(char *dest, const char *src)  

3.{  

4.    int i = 0, j = 0;  

5.    while(dest[i] != '\0'){  

6.        i++;  

7.    }  

8.    while(src[j] != '\0'){  

9.        dest[i++] = src[j++];  

10.    }  

11.    dest[i] = '\0';  

12.    return dest;  

13.}  

 

4.int strcmp(const char *s1, const char *s2); 

���ܣ��Ƚ������ַ����ij��� 

����ֵ�����ַ���1< �ַ���2�� ���ظ����� 

���ַ���1> �ַ���2�� ���������� 

���ַ���1== �ַ���2�� ������ 

˵���� 

������������������ַ��Ƚϣ�ASCII�룩��ֱ��������ͬ�ַ���‘\0’Ϊֹ 

�ַ����Ƚϲ�����“==”,������strcmp

1.//�Լ�ʵ��  

2.int my_strcmp (const char *s1, const char *s2)  

3.{  

4.  int ret;  

5.  while ((ret = *(unsigned char *) s1 - *(unsigned char*) s2++) == 0 && *s1++);  

6.  return ret;  

7.}  

����

����������ӵ���˫��ѭ�������չʾһ��˫��ѭ��������������˫��ѭ������������͸�������������Բ��ڻ��¡�

1.˫��ѭ������

1.//linklist.h  

2.#ifndef __LINKLIST_H__  

3.#define __LINKLIST_H__  

4.#include <stdio.h>  

5.#include <stdlib.h>  

6.//˫��ѭ������  

7.typedef int datatype;  

8.typedef struct dnode{  

9.    datatype data;  

10.    struct dnode *prior;  

11.    struct dnode *next;  

12.}DLinkList, *DLinkList_p;  

13.DLinkList_p creat_dlinklist(void);  

14.DLinkList_p getnode_dlinklist(DLinkList_p D, int pos);  

15.int insert_dlinklist(DLinkList_p D, datatype value, int pos);  

16.void show_dlinklist(DLinkList_p D);  

17.int delete_dlinklist(DLinkList_p D, int pos);  

18.#endif  

 

1.//  linklist.c  

2.#include "linklist.h"  

3.DLinkList_p creat_dlinklist(void){  

4.    DLinkList_p D = NULL;  

5.    D = (DLinkList *)malloc(sizeof(DLinkList));  

6.    if(NULL == D){  

7.        printf("malloc error!\n");  

8.        return NULL;  

9.    }  

10.    D->data = 0;  

11.    D->prior = D;  

12.    D->next = D;  

13.    return D;  

14.}  

15.DLinkList_p getnode_dlinklist(DLinkList_p D, int pos){  

16.    if(NULL == D){ printf("D is NULL"); return NULL; }  

17.    if(pos < 0){ printf("pos error!\n"); return NULL; }  

18.    int i = 0;   

19.    DLinkList_p p = D->next;  

20.    while( p != D && i < pos){  

21.        p = p->next;  

22.        i++;  

23.    }  

24.    if(p == D){ printf("pos > length\n"); return NULL; }  

25.    if(i == pos){ return p; }  

26.    printf("pos > length!\n");  

27.    return NULL;  

28.}  

29.//���뺯��  

30.int insert_dlinklist(DLinkList_p D, datatype value, int pos){  

31.    DLinkList_p new = NULL;    DLinkList_p Q = NULL;  

32.    if(NULL == D){ printf("D is NULL\n"); return -1; }  

33.    if(pos < 0){ printf("pos error!\n"); return -1; }  

34.    else if( D->next == D ){ Q = D; }  

35.    else{ Q = getnode_dlinklist(D, pos); }  

36.    if( NULL == Q ){ printf("Q get NULL\n"); return -1; }  

37.      

38.    new = (DLinkList *)malloc(sizeof(DLinkList));  

39.    if(NULL == new){  

40.        printf("malloc error!\n");  

41.        return -1;  

42.    }  

43.    new->data = value;  

44.    new->next = Q;  

45.    new->prior = Q->prior;  

46.    Q->prior->next = new;  

47.    Q->prior = new;  

48.    return 0;  

49.}  

50.//ɾ��  

51.int delete_dlinklist(DLinkList_p D, int pos){  

52.    DLinkList_p del = NULL;  

53.    if(NULL == D){ printf("D is NULL\n"); return -1; }  

54.    if(pos < 0){ printf("pos error!\n"); return -1; }   

55.    else{ del = getnode_dlinklist(D, pos); }  

56.    if( NULL == del ){ printf("Q get NULL\n"); return -1; }  

57.      

58.    del->prior->next = del->next;  

59.    del->next->prior = del->prior;  

60.    free(del);  

61.    del = NULL;  

62.    return 0;  

63.}  

64.void show_dlinklist(DLinkList_p D){  

65.    if(NULL == D){ printf("D is NULL\n"); return; }  

66.    DLinkList_p p = D->next;  

67.    while(p != D){  

68.        printf("%d\n", p->data);  

69.        p = p->next;  

70.    }  

71.}  

 

��һƪ��STM32��ʲô�����̣�

��һƪ��û����

�ȵ������Ƽ�
����ѧԱ��ҵ��
��нѧԱ�������
�ȵ������Ƽ�
ǰ̨ר�ߣ�010-82525158 ��ҵ��ѵǢ̸ר�ߣ�010-82525379 ԺУ����Ǣ̸ר�ߣ�010-82525379 Copyright © 2004-2018 ��������Զ���Ƽ���չ���޹�˾ ��Ȩ���� ����ICP��16055225�ţ�������������11010802025203��

�ص�����