c语言通讯录程序设计个人感言,C语言学习感悟(1)
今天學習下,為什么指針變量也可以存儲字符串,難道不是只存儲指針么?
#include
#include
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void main(int argc, char *argv[]) {
int i=3,j=5;
int *p,*q;
p = &i,q=&j;
float a=5.8,b=7.9;
float *c,*d;
c = &a,d = &b;
char m='I',n='l';
char *x,*y;
x=&m,y=&n;
printf("i=%d,j=%d\n",*p,*q);
printf("a=%f,b=%f\n",*c,*d);
printf("m=%c,n=%c\n",*x,*y);
}
感悟.png
代碼里面int *p, *q表示的是指針變量,就類似java里面的int a一樣。p,q里面保存的都是指針的地址形如0x1111這樣的地址。如果我們需要打印數據如這樣printf("i=%d,j=%d\n", *p, *q); *p, *q我們可以理解為取地址所指向的內容。
如果你的指針變量是這樣的
char buf[]="fadfdsew";
char *p=buf;
p="eqewq";
printf("%d\n",p);
printf("%s",p);
指針變量被賦值字符串.png
像上面這樣我的指針變量改變了,變成eqewq。如何理解與我前面所寫的 p=0x1111 這樣的呢?
int i=3
int *p;
p = &i
大家看到沒,我是取i的地址放到p里面,如果我們printf("%d",p),會打印0x1111 ,下面這個我是把"eqewq"放到指針變量里面,它在這里面做了什么工作呢?一共有3件事:
1.申請了空間(在常量區),存放了字符串
2.在字符串尾加上了'/0'
3.返回地址
指針獲取的是字符串首字母e的首地址,當用%s輸出時,在輸出前一個字符的同時指針會自動跳到下個字符的地址處,直到遇到'/0'停止,所以%s可以輸出一個字符串.
char buf[]="fadfdsew";
char *p=buf;
p="eqewq";
總結
以上是生活随笔為你收集整理的c语言通讯录程序设计个人感言,C语言学习感悟(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 徐松亮算法教学-基于C语言的数独(九宫格
- 下一篇: 【javascript】ajax跨域po