数组与指针

#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;
} 
View Code

 指针与数组的区别:

#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;
} 
View Code

 数组指针:

数组指针是一个指针,它指向的是一个数组

错误一:

#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;
}

  

原文地址:https://www.cnblogs.com/helloworld2019/p/11104539.html