Tag: 指针

C程序中的非法初始化

我试图在Turbo C中运行此代码并在第9行进行非法初始化我做错了什么? #include #include void main() { int names[] = {23,23,34}; int *nam[] = { names, names+1 , names +2}; char *temp; clrscr(); printf(“%u” , (nam)); getch(); }

将c字符串解析为指针数组时出现分段错误

函数makearg应该计算char数组中的单词数,并将每个单词分解为指针数组中自己的位置。 分段错误似乎是strncpy函数的问题。 int makearg(char s[], char ***args); int main(){ char **args = (char**)(malloc(100)); char *str = “ls is a -l file”; int argc; argc = makearg(str, &args); printf(“%d”, argc); printf(“%c”, ‘\0’); int i; for(i = 0; i < argc; i++){ puts(args); printf("%c", '\n'); } return 0; } ///////////////////////////////////////// int makearg(char s[], char ***args){ int argc […]

C指针:struc * A,struct * A和struct * A之间有什么区别?

我正在做一些研究以更好地理解C中的指针,但我很难理解这些:’struct * A’是结构上的指针吗? 那么什么是’struct * A’? 而且我看到有人写’int const * a’,这是什么意思?

在单个malloc()调用中创建2D数组

#include #include #define MAX_ROWS 5 #define MAX_COLS 5 int globalvariable = 100; void CreateMatrix(int ***Matrix) { int **ptr; char *cp; int i = 0; *Matrix = (int**)malloc((sizeof(int*) * MAX_ROWS) + ((MAX_ROWS * MAX_COLS)*sizeof(int))); ptr = *Matrix; cp = (char*)((char*)*Matrix + (sizeof(int*) * MAX_ROWS)); for(i =0; i < MAX_ROWS; i++) { cp = (char*)(cp + ((sizeof(int) […]

分配给类型时不兼容的类型 – C

我在C中的一个项目中使用Code :: Blocks。 当我编译时,我得到错误:“在第81,85,90,91行上从类型’double’分配类型’double *’时不兼容的类型”。 该项目是采用单位转换工具并包含多个函数,而不是main()下的所有内容。 http://pastebay.net/1181184

c – 错误:在非结构或联合的情况下请求成员xxxxxx

这是一个旨在使用ppm图像文件的程序。 我在尝试使用接受全局结构变量并提取该图像成员的函数时遇到编译错误。 这是全局结构(在ppmIO.c和ppmIO.h中声明): ppmIO.c: struct Image *instance; ppmIO.h: struct Image { int width; int height; unsigned char *data; }; extern struct Image *instance; 这就是我从main调用我的函数的方法: ImageInvert(&instance); 这些是我的imageManip.c文件的相关部分: #include #include #include #include #include void ImageInvert(struct Image **toInvert) { int i; int pix = (*toInvert->width) * (*toInvert->height); for (i = 0; i data = ((unsigned char)255 – *(toInvert)->data)); […]

PyCuda:在Cuda内核中通过指针取消引用数组元素

我正在使用PyCuda通过指针将数组对传递给cuda内核。 数组是不同内核的输出,因此数据已经在GPU上。 在内核中,我试图访问每个数组中的元素来进行向量减法。 我为数组中的元素获取的值不正确(h&p在下面的代码中是错误的)。 任何人都可以帮我看看我做错了什么? 我的代码: import pycuda.driver as cuda import pycuda.autoinit from pycuda.compiler import SourceModule import numpy as np import time import cv2 from pycuda.tools import DeviceMemoryPool as DMP from scipy.spatial import distance import os import glob def get_cuda_hist_kernel(): #Make the kernel histogram_kernel = “”” __global__ void kernel_getHist(unsigned int* array,unsigned int size, unsigned int* […]

printf中的预增量和后增量

int main() { int value = 4321; int *ptrVal = &value; printf(“%d %d”,++value,(*(int*)ptrVal)–); return 0; } 在上面的print语句中,预增量/后增量如何工作? 为什么回答4321 4321?

如何通过在c中提升内存地址来存储结果

例1: #include #include void saveData(void* data) // only allow to use void* data { // …After some calculation: int inputData[5] = {1,2,3,4,5}; memcpy((int*)data, inputData, sizeof(inputData)); } int main() { int myNum[256]; saveData((void*)myNum); printf(“\n%d%d%d%d%d\n”,myNum[0],myNum[1],myNum[2],myNum[3],myNum[4]); } 我在main中有一个int数组,并将数组传递给函数saveData, 在函数savaData中,我将inputData [5]保存到myNum [256]; 它工作正常。 例2: 如果我有一个struct数组而不是int数组怎么办: #include #include struct Analysis{ int a; int b[10]; }; void saveData(void* data, size_t size) […]

在c 中交换任何类型的两个变量

c中是否有任何逻辑可以交换任何类型的两个变量。 即int,float,字符序列。 我可以想到将每种类型的变量存储为characte序列并将其交换为普通字符串的逻辑,但我不是它的好主意。