&取出地址是负的
#include <stdio.h>
char ga[]="abcdefghijklm";
void my_array_func(char ca[])
{
int i = 3;
printf("addr of int is = %d\n",&i);
printf("addr of array param = %d\n",&ca);//指针的地址
printf("addr of array param = %d\n",*ca);//指针的值
printf("addr (ca[]) = %d\n",*&ca);
}
void main()
{
my_array_func( ga);
}
运行结果
addr of int is = -1074044836
addr of array param = -1074044816
addr of array param = 97
addr (ca[]) = 134520852
地址是有个符号 怎么理解呢
谢谢
[解决办法]
会不会是越界了,试试unsigned的?
[解决办法]
打印地址用%x。不放心就用0x%08x。
[解决办法]
[解决办法]
你用%X输出试试看。
我觉得地址是没有正负之分的,因为你使用%d输出,所以printf把它当做一个有符号数输出。如果要查看地址的话,还是用16进制输出吧。
[解决办法]
你的环境是什么?我怎么没看到负数?
[解决办法]
地址是无符号数