如何把一字符串的值赋给long型指针?

来源:百度知道 编辑:UC知道 时间:2024/06/01 12:48:33
void main()
{
char str[] = "abcdefg";
long* a = str; //出错的.应该如何赋值?
char* b = str;

printf("%d,%d,%s\n",sizeof(long),sizeof(a),a);
}

我要的不是程序的输出结果,只想知道如何将一个字符数组的首地址赋给long型指针。
还有一个问题就是如果像如下赋值方式的话
char str[] = "1234567890";
long* pLong = (long*)str;
pLong++;

那么printf("<%d> [%d],%s\n",sizeof(long),sizeof(pLong),pLong);
的输出为什么是<4> [4],567890
而不是<4> [4],234567890

为何pLong++后的1234被截取而不是指向2?
像上面那样强制类型转换的赋值后,*pLong指向的又是哪里?难道不是数组str的首地址吗?

补充问题答复:
char str[] = "1234567890";
long* pLong = (long*)str;
printf("pLong=%x\r\n",pLong);//打印pLong的值
pLong++;
printf("pLong=%x\r\n",pLong);////打印pLong的值对比

//++,并不是简单加1,对于指针,增加的值就是sizeof(指针指向的类型)
//因为pLong是长整数型指针
//如果pLong=0;
//那么pLong++;后pLong=4;

--------------------------------
强制类型转换
long *a = (long *)str;

void main()
{
char str[] = "abcdefg";
long* a = (long*)str; //出错的.应该如何赋值?
char* b = str;

printf("%d,%d,%s\n",sizeof(long),sizeof(a),a);
}