#include<stdio.h>
int main(){
int a;
int *p=&a;
printf("输一个整数
") ;
scanf("%d",&a);
printf("a=%d",a);
printf("输一个整数
") ;
scanf("%d",p);
printf("a=%d",a);
}
对字符串;
#include<stdio.h>
int main(){
char str[123];
printf("输入一个字符串");
scanf("%s",str) ;
printf("str=%s",str);
}
数组名的真实身份:
#include<stdio.h>
int main(){
char str[123];
printf("输入一个字符串");
scanf("%s",str) ;
//printf("str=%s",str);
printf("%p
",str);
printf("%p",&str[0]);
}
#include<stdio.h>
int main(){
char a[]="hello,,world!";
int b[5]={1,2,3,4,5};
float c[5]={1.1,1.2,1.3,1.4,1.5};
printf("a[0]=%p
a[1]=%p
a[2]=%p
",&a[0],&a[1],&a[2]);
printf("%p",a);
}
指向数组的指针
指针法:
#include<stdio.h>
int main(){
char a[]="hello,,world!";
int b[5]={1,2,3,4,5};
float c[5]={1.1,1.2,1.3,1.4,1.5};
printf("a[0]=%p
a[1]=%p
a[2]=%p
",&a[0],&a[1],&a[2]);
printf("%p",a);
}
#include<stdio.h> #include<string.h> int main(){ char *str="I love you"; int i,length; length=strlen(str); for(i=0;i<length;i++){ printf("%c",str[i]); } return 0; }
指针与数组的区别:

![]()
#include<stdio.h>
#include<string.h>
int main(){
char str[]="I love you";
int count=0;
char *p=str;
while(*p++!=' '){
count++;
}
printf("字符串长度%d",count);
return 0;
}
数组名为一个地址,指针名为一个左值
指针数组与数组指针
int *p[5]; //指针数组 int (*p)[5];//数组指针


指针数组是一个数组,每个数组元素存放一个指针变量
#include<stdio.h>
#include<string.h>
int main(){
int a=1;
int b=2;
int c=3;
int *p[3]={&a,&b,&c};
int i;
for(i=0;i<3;i++){
printf("%d",*p[i]);
}
}
#include<stdio.h> #include<string.h> int main(){ char *p[5]={ "我是", "王", "大", "chui", "haha" }; int i; for(i=0;i<5;i++){ printf("%s",p[i]); } return 0; }
数组指针:

数组指针是一个指针,它指向的是一个数组
错误一:
#include<stdio.h>
#include<string.h>
int main(){
int (*p)[5]={1,2,3,4,5} ;
int i;
for(i=0;i<5;i++){
printf("%d",*(p+i));
}
return 0;
}
错误二:
#include<stdio.h>
#include<string.h>
int main(){
int array[]={1,2,3,4,5} ;
int (*p)[5]=array;
int i;
for(i=0;i<5;i++){
printf("%d",*(p+i));
}
return 0;
}
正确一:指向第一个元素,而不是数组
#include<stdio.h>
#include<string.h>
int main(){
int tmp[5]={1,2,3,4,5};
int *p=tmp;//指向第一个元素
int i;
for(i=0;i<5;i++){
printf("%d
",*(p+i)) ;
}
return 0;
}
正确二:指向数组
#include<stdio.h>
#include<string.h>
int main(){
int tmp[5]={1,2,3,4,5};
int (*p)[5]=&tmp;//指向第一个元素
int i;
for(i=0;i<5;i++){
printf("%d
",*(*p+i));
}
return 0;
}