char指针数组和指向char指针的指针有什么区别吗?
答案 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));