Tag: 指针

减去两个指针,给出意想不到的结果

#include int main() { int *p = 100; int *q = 92; printf(“%d\n”, p – q); //prints 2 } 上述程序的输出不应该是8吗? 相反,我得到2。

在C中,如何对每个指针指向int的可变长度数组的指针数组进行排序?

我的问题是如何通过所有其他数组中的第一个数字对arr6进行排序。 我的意思是,如果arr1在第一个num有3个,那意味着它需要在arr6为3。 最后, arr6需要首先指向arr4 , arr4 , arr2 , arr1 , arr5 。 #include #include void sort_arr(int **arr6); void print_arr(int **arr6); void order_arr(int **arr6); int main(void) { int i = 1; int arr1[] = { 3, 9, 6, 7 }; int arr2[] = { 2, 5, 5 }; int arr3[] = { 0 }; int […]

2 和6 是什么意思?

#include int main(void) { char c[]=”GATECSIT2017″; char *p=c; printf(“%s”, c+2[p]-6[p]-1); return 0; } 2[p]和6[p]是什么意思? 请提供详细说明。 产量: 17

如何传递指针并在堆上分配空间

我试图向一个函数提供一个char指针,然后用它填充它,以便调用函数可以使用它。 因为它总是在调用函数中给我奇怪的东西,我写了一个关于我所做的简单表示: #include #include void bla(char *t) { t = (char*) malloc(5); if (t != 0) { t[0] = ‘h’; printf(“%c\n”, t[0]); } } int main(int argc, char **argv) { char b[10]; bla(b); printf(“%c\n”, b[0]); return 1; } 我不太确定C传递参数副本是否有事可做。 我需要将指针传递给指针,还是有更好的解决方案? 编辑: 对不起的家伙,但我没有得到它。 你能看一下这个例子: #include #include void blub(char **t) { printf(“%d\n”, *t); *t = (char*) malloc(sizeof(char) […]

返回alloca指针

此代码是否返回对堆栈上分配的变量的无效引用? 或者是什么: void *f(size_t sz) { return alloca(sz); } 或者这是一个由alloca实现/编译器支持处理的特殊情况,如f(alloca(size), alloca(size))会是什么?

双链表和void指针

我用void指针写了这个双链表 typedef struct list_el { void *data; struct list_el *prev; struct list_el *next; } list_el; typedef struct linked_list { int n_el; /*number of elements*/ list_el * head; /*pointer to the head*/ list_el * tail; /*pointer to the head*/ } linked_list; 我写了这些函数来处理它。 /*for list_el allocation*/ list_el * new_el ( void ) { return (list_el *) malloc(sizeof(list_el)); […]

如何从函数返回可变大小的字符串?

我需要一个函数的工作代码,它将返回一个随机长度的随机字符串。 我想要做的事情将通过以下代码更好地描述。 char *getRandomString() { char word[random-length]; // …instructions that will fill word with random characters. return word; } void main() { char *string = getRandomString(); printf(“Random string is: %s\n”, string); } 为此,我严格禁止使用除stdio.h之外的任何其他包含。 编辑:这个项目将适合为PIC微控制器编译,因此我不能使用malloc()或类似的东西。 我在这里使用stdio.h的原因是我能够使用GCC检查输出。 目前,此代码给出了此错误.- “warning:function返回局部变量的地址[默认启用]” 然后,我认为这可行.- char *getRandomString(char *string) { char word[random-length]; // …instructions that will fill word with random characters. string = […]

我使用malloc()将多维变量数组传递给C中的函数时遇到问题

这段代码应该在main中创建一个数组然后打印它,但每次运行它时我只得到一个全0的数组 #include #include void print(float **A, int w, int h){ int i, j; A = (float*) malloc(w*h*sizeof(float)); for (i=0;i<h;i++){ A[i] = (float*) malloc(w*sizeof(float)); } for (i=0; i<h; i++){ for(j=0; j<w; j++){ printf("%f ", A[i][j]); } printf("\n"); } } int main(void) { int i; int x_dimension=3; int y_dimension=2; float arr [3][2]={}; arr[0][0]=16.2; print(arr,x_dimension,y_dimension); return 0; }

C / unix套接字:由于char指针(?)导致的分段错误(核心dumbed)

(也许是这个问题的重复,但我发现很难自己查明我的问题,所以如果这里的答案与其他问题几乎相同,我会尝试删除这个问题) 我想创建一个客户端和一个服务器程序(使用pthreads的多个客户端),其中每个客户端发送N个号码(由用户输入)到服务器,服务器返回这些号码的平均值,如果是“确定消息”,如果平均值> 10,否则服务器返回“不正常消息”。 在客户端打印服务器的结果之后,询问用户是否要为其平均值输入新的数字序列。 这是我到目前为止的地方: 客户: #include #include #include #include #include #include #include #define SOCK_PATH “avg_socket” int main(void) { int i, s, t, len, done; int numofintegers; int yesorno; int average, avg; char *sequencecheck; struct sockaddr_un remote; char str[100]; if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) { perror(“socket”); exit(1); } printf(“Trying to connect…\n”); remote.sun_family […]

通过非const指针修改const int

#include int main(){ const int a = 10; *(int*)(&a) = 9; // modify a printf(“%d”, a); return 0; } 当我在Xcode上运行此代码时,输​​出为10(未更改) 当我在Visual Studio社区上运行此代码时,输​​出为9(已更改) 为什么?