代码之家  ›  专栏  ›  技术社区  ›  Mushy

C指向数组的指针;到基本体

  •  0
  • Mushy  · 技术社区  · 8 年前

    char* p char name[] = "My Name" ,我没有任何指导意见认为以下各项并不都是平等的;i、 e.生成指向数组第一个字符的指针

    char* pname = name; // points to first char in array
    
    printf("\n%c\n", *pname);
    
    pname = &name; // points to first char in array
    
    printf("\n%c\n", *pname);
    
    pname = &name[0]; // this explicitly points to the first char in the array
    
    printf("\n%c\n", *pname);
    

    每个的结果 printf 是相同的值,因为我没有看到编译器警告,所以我需要关于哪种形式正确的指导。

    这与指向int的指针相同,在这里我看不到编译器警告,因此我假设以下是等效的

    int age = 45;
    int* page = &age; // point to age
    page = age // pointer to age
    

    点-语法特定,并纠正所有警告

    1 回复  |  直到 8 年前
        1
  •  3
  •   melpomene    8 年前
    char* pname = name; // points to first char in array
    

    对的计算数组时,会得到指向其第一个元素的指针。

    pname = &name; // points to first char in array
    

    &name pname 是一个 char * &pname 是一个 char (*)[8] .

    pname = &name[0]; // this explicitly points to the first char in the array
    

    a[b] 定义为 *(a + b) . 所以 &name[0] 真的意味着 &*(name + 0) . 与之前一样,数组的计算结果为其第一个元素的地址。正在添加 0 不会改变它。 * & 返回地址(它们相互抵消)。

    int age = 45;
    int* page = &age; // point to age
    

    对的

    page = age; // pointer to age
    

    age 是一个 int 但是 page int *

    你从哪学C?