指向char指针和char指针数组的指针

时间:2010-09-17 07:23:15

标签: pointers

char指针数组和指向char指针的指针有什么区别吗?

2 个答案:

答案 0 :(得分:1)

http://c-faq.com/aryptr/aryptr2.html

它不一样,因为它将char数组与指向char的指针进行比较,但原理是相同的 - 只需用指针替换插图中的字母。

答案 1 :(得分:0)

是的,事物数组和指向事物的指针之间存在差异,但在某些情况下它们通常会消失。

将数组传递给函数(例如)时,会降级为指向该数组中第一个元素的指针。

一个例子:

#include <stdio.h>

static void func (char arr[], char *parr) {
    printf ("in func: %3d %3d\n", sizeof(arr), sizeof (parr));
}
int main (void) {
    char arr[100], *parr = arr;
    printf ("         arr ptr\n");
    printf ("         --- ---\n");
    printf ("in main: %3d %3d\n", sizeof(arr), sizeof (parr));
    func (arr, parr);
    return 0;
}

输出:

         arr ptr
         --- ---
in main: 100   4
in func:   4   4

这通常会让人无厌,因为你无法获得传递给函数的“数组”的大小(你只得到传递的大小,这是一个指针)。如果你想要实际尺寸,你也必须传递它:

int array[100];
doSomethingWith (array, sizeof (array));