指针的int类型和char类型声明和输出比较
由于我们对计算机底层原理不熟悉的情况下,我相信每个人在初学指针的时候都会感到很抽象,无解。这里呢,我解释一下输出指针的int类型和char类型的区别。
首先我们看int类型的声明以及输出
#include<stdio.h>
int main(){
int var=100;
int *ptr=&var;
printf("变量var的值:%d\n",var);
printf("变量var的地址:%p\n",&var);
printf("-----------------------------\n");
printf("指针变量ptr的值:%d\n",*ptr);
printf("指针变量ptr的地址:%p\n",ptr);
return 0;
}
输出内容:
通过输出内容我们看到了:
这里ptr是指针,ptr是指针指向地址的值*( * 代表 “取内容运算符” )。
输出int类型的值我们就必须要在变量之前添加*,输出地址我们只需要变量名就可以了。
好,这里我们讲声明char指针和输出char指针的区别
众所周知,C语言是不像JAVA等面向对象语言有Stirng类型的,在面向对象中。Char一般指代的是一个字符,而String指代的是字符串。C语言里面char可以声明为一个字符串,其实底层其实是一个字符数组,数组的末尾索引存储的是 “\0”,所以每次输出的时候,遇到“\0”就代表输出结束。
首先看一下char指针声明的代码
#include<stdio.h>
int main(){
char *String="Hello World";
printf("%s\n",String);
return 0;
}
输出:
Hello World
为什么输出char变量的时候没有在变量之前添加*修饰符呢,因为我们输出的时候是%s,这是输出字符串类型,我们要的就是一整个字符串,而不是要单个字符,如果是单个字符,我们应该使用的是%c,这样才是输出单个字母,并且这个char *string实际上就是一个字符数组char[],所以*String其实就是这个字符数组的首地址,当我们输出%s的时候,会读到\0才结束整个字符数组的输出,从而使我们看到的是一个字符串。
的首地址,当我们输出%s的时候,会读到\0才结束整个字符数组的输出,从而使我们看到的是一个字符串。