Tag: 指针

指向结构和自我指针的指针

结构中的自引用指针和结构指针之间有什么区别? struct abc { int data; struct abc *next; } struct abc *pt; *next和*pt之间有什么区别? 他们的使用方式有何不同? 我对这两者之间的确存在疑问 我是初学者 第一个例子主要用于链表 指向结构节点和自引用指针的指针是一回事吗? 请参阅 see-programming.blogspot.in/2013/05/chain-hashing-separate-chaining-with.html这里我们使用struct hash * hashTable作为数组..how ?? 我们可以用* pt做同样的事吗

初始化struct数组时出错(不兼容的类型)

我已经读过一些类似的问题,但我仍然看不出我出错的地方。 我malloc指针,似乎工作正常,但我在这一行得到一个错误(不兼容的类型): canArray [i] = (TinCan *) malloc(sizeof(TinCan)) 这是完整的代码: typedef struct TinCan { int date; int time; } TinCan; int main () { int i; TinCan *canArray = malloc(10 * sizeof(TinCan)); for (i =0; i < 9; i++ ) { canArray [i] = (TinCan *) malloc(sizeof(TinCan)); } }

C函数返回数组

我相对知道C,我习惯用Java编程,所以我发现C在数组方面有点困难。 在这种情况下,我仍然赞同自己: int a []; int* a; int *a; 在java中,我会做这样的事情来返回一个函数中的数组: int [] returnArr(int [] a){ … modify a … return a; } int [] a = {…}; int [] b = returnArr(a); ## 我怎么能在C中做同样的事情,特别是##的部分。 编辑:我有这个function: float *normalizeValues(float *v, float maxY){ int size = sizeof(v) / sizeof(float); float max = findMax(v); float ratio = maxY / […]

malloc指针地址在main和其他函数的区别

我有以下问题。 为什么以下示例中的两个指针的地址存在差异? 这是完整的代码: #include #include void *mymalloc(size_t bytes){ void * ptr = malloc(bytes); printf(“Address1 = %zx\n”,(size_t)&ptr); return ptr; } void main (void) { unsigned char *bitv = mymalloc(5); printf(“Address2 = %zx\n”,(size_t)&bitv); } 结果: Address1 = 7ffe150307f0 Address2 = 7ffe15030810

将void指针强制转换为char指针指针是否安全

只是想知道这样投射是否安全: char **cpp; // … allocation and what not void *vp = (void *)cpp; // … cpp = (char **)vp; 应该使用无效**还是无效*罚款? 这对我的几个盒子没有问题,但是想知道它是否会在某些系统上引起问题。

char *变量地址与char 变量地址

我将从以下两个声明和初始化中打印出地址和字符串: char * strPtr = (char *) “This is a string, made on the fly.”; char charArray [] = “Chars in a char array variable.”; 打印时,以下输出会出现变量charArray和strPtr的完全不同的地址。 问题是,“为什么?” 印刷: printf( “%10s%40s%20p\n”, “strPtr”, strPtr, &(*strPtr)); printf( “%10s%40s%20p\n”, “charArray”, charArray, charArray); 输出: strPtr This is a string, made on the fly. 0x400880 charArray Chars in a char array […]

Swift with C struct pointer

我有一个包含指针的C结构,全部在C头中定义: struct testA { int iSignal; struct testB *test; }; struct testB { int iPro; }; 然后我有一个Swift程序来初始化这个结构的一个实例: var a = testA() var b = testB() a.test = &b // this line error 但是我收到以下错误: ‘&’ used with non-inout argument of type ‘UnsafeMutablePointer’ 有人可以帮忙吗?

如何在Swig中使用Python中的float **?

我正在为一些c函数编写swig绑定。 其中一个函数需要浮动**。 我已经在使用cpointer.i作为普通指针并查看了carrays.i ,但我没有找到一种方法来声明一个浮点数**。 您有什么推荐的吗? 接口文件: extern int read_data(const char * file,int * n_,int * m_,float ** data_,int ** classes_);

使用指针打印方形矩阵

我已经浏览过以前回答有关指针和矩阵的问题,但在这些情况下,矩阵被视为指针的指针。 但是,我试图创建一个函数,它使用一个简单的指针和另一个打印它的函数读取矩阵。 这是我的代码,读取function似乎工作正常,但程序在打印部分崩溃。 如果我从printf语句中删除“*”程序的工作原理(即它打印4到4的数字,我想这没关系,因为int存储在4个字节上)。 void readm(int *p,int n) { p=(int *)malloc(sizeof(int)*n*n); for(int i=0;i<n*n;i++) scanf("%d",p+i); } void printm(int *p,int n) { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) printf("%d ",*(p+(i*n)+j)); printf("\n"); } }

试图在C中围绕字符串大小包裹我的脑袋

我和一个朋友正在为大学做一个C编程单元。 我们知道C中本身没有“字符串”,相反,字符串是由字符数组定义的。 真棒! 所以当处理“字符串”时,很明显正确理解数组和指针很重要。 我们正在很好地理解指针声明,何时何时不取消引用指针,并使用一些printf来测试我们的实验。 一切都很成功。 但是,当我们使用它时: char *myvar = “”; myvar = “dhjfejfdhdkjfhdjkfhdjkfhdjfhdfhdjhdsjfkdhjdfhddskjdkljdklc”; printf(“Size is %d\n”, sizeof(myvar)); 它吐出的Size is 8 ! 为什么8? 显然’myvar’消耗了超过8个字节(或者是它)? (我应该清楚并指出我非常清楚’strlen’。这不是获取字符串长度的练习。这是为了理解为什么sizeof为变量myvar返回8个字节。)