1. 程式人生 > >數組名和指針

數組名和指針

arr 函數形參 其他 常量 ret style nbsp 同時 失去

#include <stdio.h>
int main()
{
char str[10]="123456789";
char *pStr = str;
printf("%d\n", sizeof(str));
printf("%d\n", sizeof(sizeof(pStr)));
printf("%s\n", str);
printf("%s\n", pStr);
return 0;
}

運行如上程序,結果顯示

10

4

123456789

123456789

ps:printf("%s",) 逗號後面直接填想要輸出的字符串的位置的指針,例如printf("%s",str+1);或者printf("%s",pStr+1);就會輸出23456789

sizeof是一種操作符,不是函數,因為sizeof(int);這條語句合法,但是函數中不可能將數據類型作為形參.

說明1.數組名指代是一種數據結構--數組,因為10和4的區別

但是如上面程序2.數組名又可以常量指針賦給其他變量指針,因為pStr一樣可以輸出字符串;

#include <stdio.h>
void arrayTest(char str[])
{
printf("%d\n",sizeof(str) );
printf("%s\n",++str);
}
int main()
{
char str1[10] = "ILoveU";
arrayTest(str1);
return 0;
}

運行上面程序結果為

4

LoveU

說明3.(1) 數組名作為函數形參時,在函數體內,其失去了本身的數據內涵,僅僅只是一個指針;

  (2) 在失去其內涵的同時,它還失去了其常量特性,可以作自增、自減等操作,可以被修改。


 

數組名和指針