指针 数字数组和字符数组首地址的输出
By admin
- One minute read - 46 words#include #include
int main() {
char *p;int *p1;
int a[10]={1,2,3,4,5,6,7,8,9,0}; char str[]=”haohtmlcom”; p=str; p1=a;
printf( “%x” , p); /*输出的是地址*/ printf(“%s”,p); /*输出的是字符串haohtmlcom*/
printf(“%x”,p1); /*输出的是地址*/
printf(“%s”,p1); /*输出的是字符串,乱码*/
system(“pause”);
}
p,p1中存放的应为字符串,但在输出时还要兼顾前面的输出格式符的控制,如果是%s,则会将p的地址内的数据输出,而不再输出p本身的内容地址.
printf(“%c”, *p);//会输出字符串的第一个字母h
printf(“%d”, *p1);//会输出数组的第一个数字.
所以 p,p1存放的都是地址,在用%c,%d时都能作为首地址输出第一个字母或数组元素,但是如果换用,%s,输出字符串,在一个地址空间内是不能存在字符串的,所以编译器会认为是连续空间内的字符串,所以就输出了字符串。
如果对数值指针操作的话,可以这样:
int value = 253; int *pint = &value;
printf(“%d\n”, *pint);
这样即可利用指针输出变量value的值253.