一、指標
(1)、指標與陣列
#include int main()
; int *p;
//下面兩句其實是等價的,陣列名本身就代表陣列位址
p=ages;
p=&ages[0];
printf("p---%p\n",p);//指標指向陣列首元素,因此列印的是陣列位址
printf("*p---%d\n",*p);//指標指向陣列首位址,其指向位址中的值就是ages[0]
/*若指標是int型別,加1代表加了4個位元組。
若指標是char型別,加1代表加了1個位元組。
*/printf("p---%p\n",p+1);//ages[1]的位址
printf("*p---%d\n",*(p+1));//ages[1]的值
//遍歷陣列
for(int i=0;i
1.陣列元素的訪問方式
1>陣列名[下標] 如ages[2]
2>指標變數名[下標] 如p[2]
3>*(p+i)
2.指標變數的+1,究竟加多少,取決於指標的型別
#include void test(int *array)
int main()
; /*
ages[1]的位址傳給指標array,那麼array+2,就是從ages[1]開始往後推8個位元組
就是ages[3]的值
*/test(&ages[1]);
/*ages[2]的位址傳給指標array,那麼array+2,就是從ages[2]開始往後推8個位元組
變數a在陣列後面,所以array+2此時指向的是變數a
*/test(&ages[2]);
printf("ages[3]的位址是---%p\n",&ages[3]);
printf("a的位址是---%p\n",&a);
return 0;
}
2、指標和字串
c語言陣列是放在棧記憶體中的。所以用字元陣列定義的字串是存放在棧記憶體中的變數。而字元指標定義的陣列是存放在常量區中的,是乙個常量,方便下次使用。
#include int main()
總結:
1.定義字串的兩種方式
1>利用陣列
char name="it";
特點:字串裡面的字元是可以修改的
使用場合:字串的內容需要經常修改
2>利用指標
char *name="it";
特點:字串是乙個特常量字串,裡面的內容不能修改
使用場合:字串的內容不需要修改,且這個字串經常使用
#include int main()
; char name1[2][10]=;
printf("%s\n",name[1]);
printf("%s\n",name1[1]);
//輸入字串,這就用字串陣列了
char name2[10];
printf("請輸入乙個姓名\n");
scanf("%s",name2);//%s就是從name2這個位址開始乙個乙個輸入
printf("姓名是--%s\n",name2);
return 0;
}
3、返回指標的函式
#include #include char *test();
int test1(char *);
int main()
//返回指標的函式
char *test()
//返回字串位元組數
int test1(char *c)
C語言基礎之指標
一 指標 1 指標就是存放位址的變數。乙個指標變數占用4個位元組。int pa int pa 2 指標型別 取位址 解引用 1 指標型別 int pa pa,pa int pa int pa 語義 pa是乙個指標,該指標指向乙個int型的資料,即pa存放乙個int型資料的位址。int pa,pb p...
C語言基礎之指標運算
指標的加法 define crt secure no warnings include int main 宣告乙個char型別的陣列 char p ac 指標p為char 型別 printf p p n p printf p 1 p n p 1 輸出指標p 1的結果 int ai 宣告乙個int型別...
指標 C之精華 續1
1 先取 p值,後使p值加1 p 與 p 等價。和 同優先順序,結合方向自右而左 2 先使p值加1,後取 p值 p 1 用陣列名做函式引數 c編譯時將形參陣列名 作為指標變數來處理的,所以以下2個函式的定義是等價的 f int arr int n f int arr,int n 2 多維陣列與指標 ...