欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

对C语言指针的简单理解

程序员文章站 2022-03-11 22:31:36
...
    什么是指针?指针就是存放地址的变量;指针也是变量,也有内存地址,其类型长度为4byte(32位)、8byte(64位)。

如何使用?如:
1:指针指向变量;

   int main(){
   		char *p ;//声明一个字符型指针p;
   		char a = 'b';//声明一个字符型变量a,并赋值为'b';
   		p = &a;//指针p指向变量a,既p存放了变量a的地址
   		printf("指针p存放的地址:%ld\n",p);
   		printf("变量a的地址:%ld\n",&a);
   		return 0;
   }

输出的值都是相同的。
2:指针指向一串字符;

int main(){
	char *p = "say you";//双引号申请一段空间存放字符串并返回首地址给指针p,此时p成为指向数组的指针;
	if(p == "say you"){
		printf("all right");
	}
	printf("%c\n",*(p+1));//指向数组的指针可以使用*p、*(p+1)访问元素;
	return 0;
}   

输出的结果为:all right
a
3数组名与指针

int main(){
	char a[8];//声明一个长度为8的字符型数组,编译器自动为其分配了8字节的内存空间,数组名a存放分配的空间的首地址;
	char *p;//声明一个字符型指针,指针指向0,为空指针。
	printf("数组a的地址:%ld\n",a);
	pirntf("指针p的地址:%ld\n",p);
	return 0;
}

输出结果为:数组a的地址:一个随机分配的内存地址
指针p的地址:0

int main(){
	char a[] = "say you";//数组a存放对应的字符
	char *p = "say you";//指针p指向字符串“say you”的首地址;
	printf("数组a的地址:%ld\n",a);
	printf("指针p的地址:%ld\n",p);
	printf("字符串的地址:%ld\n","say you");
	return 0;
}	

输出的结果:数组a的地址为一个随机分配的内存地址,指针p的地址等于字符串"say you"的地址;

相关标签: 指针