一、指针不等于地址
指针不仅有地址,还有类型,是一个存储了地址的变量,可以改变指向;而地址是一个常量
#include<stdio.h> #include<stdlib.h> void main() { int num=10; int data=20; printf("num=%d,&num=%p data=%d,&data=%p ",num,&num,data,&data); //用键盘初始化一个指针:初始化一个数据需要数据的地址,初始化一个指针需要指针的地址 int *p; scanf("%p",&p);//输入num的地址后,p=&num *p=5; int *pp; int pdata; scanf("%p",&pdata);//输入data的地址后,pdata=&data pp=(int *)pdata;//把整数转换成指针 *pp=11; printf("num=%d,&num=%p data=%d,&data=%p ",num,&num,data,&data); system("pause"); }
二、指针和字符串数组的区别
#include<stdio.h> #include<stdlib.h> void main() { char *p="abcdefg";//p是一个指针,存储了常量字符串的地址 char str[10]="abcdefg";//str是数组,接受了常量字符串的赋值 printf("%s,%s ",p,str); printf("%d,%d ",sizeof(p),sizeof(str)); //*p='A';//常量不可修改 str[0]='A'; printf("%s,%s ",p,str);//数组是变量,可以修改 system("pause"); }
#include<stdio.h> #include<stdlib.h> #include<string.h>//c语言头文件,无string类 void main0() { char str[20]="hello,yincheng ok"; char ch='o'; char *p=str; while (*p!='