摘要: //强制类型转换的作用#includeint main(){ char a[20]="12345678"; //一个char字符占8位,即一个字节 //int *ptr=(int *)a; int *ptr=(int *)a; //int变量占32位,即4个字节 printf("%s\n",ptr); ptr++; //相当于加了四个字节 printf("%s",ptr);} 表格表示char数组的存储结构,以1个字节为单元,共有8个单元;ptr++直接跨越了4个单元;强制类型转换的作用就在这里 阅读全文
posted @ 2014-01-10 21:44 yexuannan 阅读(786) 评论(0) 推荐(0) 编辑
摘要: 1、先看一反例://目的:通过函数myMalloc改变指针p的值#include#includevoid myMalloc(char *s) //我想在函数中分配内存,再返回 { s=(char *) malloc(100); } void main() { char *p=NULL; myMalloc(p); //这里的p实际还是NULL,p的值没有改变,为什么? if(p) free(p); } 以上例子中,p实际还是NULL,p的值没有改变,为什么?答:我们的目的就是要改变指针p的值,因为p本身就是指针,传如myMalloc函数的实际上就是P... 阅读全文
posted @ 2014-01-10 21:16 yexuannan 阅读(1704) 评论(0) 推荐(0) 编辑
摘要: 首先看下此运行时函数的原型:cudaError_t cudaMalloc (void **devPtr, size_t size ); 主要的第一个参数。为什么是两个星星呢?用个例子来说明下。float *device_data=NULL;size_t size = 1024*sizeof(float);cudaMalloc((void**)&device_data, size);例子中:我在显存中申请了一个包含1024个元素的float数组。而device_data这个指针是存储在主存上的。之所以取device_data的地址,是为了将cudaMalloc在显存上获得的数组首地址赋值 阅读全文
posted @ 2014-01-10 20:28 yexuannan 阅读(2321) 评论(0) 推荐(0) 编辑