Tag: 指针

2D数组和指针

嘿所有,我是一个指针新手,在下面的代码中,我试图将二维数组的值存储在一个结构中,然后打印它们。 但是,我在行中得到一个编译错误:f d->mychar[i] = newptr[i]; 我得到的结果虽然char * str与str[]相同,但char ** str与str[][] ,但我找不到解决方案来完成以下工作。 typedef struct mystruct{ char mychar [20][20]; }mystruct_t; void printvalues ( char ** newptr){ int i; mystruct_t * fd; for (i=0;imychar[i] = newptr[i]; printf(“My value is %s and in struct %s\n”, newptr[i], fd->mychar[i]); } } int main (int argc, char **argv){ int i; char * […]

Little endian与Big endian

假设我有4Byte整数,我想将它转换为2Byte短整数。 我是对的,在(小端和大端)短整数将包含这个4Byte整数的2个最低有效字节? 第二个问题: 小端和大端处理器中这些代码的结果是什么? int i = some_number; short s = *(short*)&i; 在大端处理器2中的恕我直言,将复制最重要的字节,在小端,将复制2个最低有效字节。

如何在C中声明一个常量函数指针数组?

我需要声明一个指向函数的指针数组,如下所示: extern void function1(void); extern void function2(void); … void (*MESSAGE_HANDLERS[])(void) = { function1, function2, … }; 但是,我希望将数组声明为常量 – 数组中的数据和指向数据的指针。 不幸的是,我不记得在哪里放置const关键字。 我假设在这种情况下,实际指针MESSAGE_HANDLERS已经是常量,因为它被声明为数组。 另一方面,如果声明如图所示,那么数组中的函数指针是否可以在运行时更改?

什么是输出? 请解释一下,考虑到我是c的新手

int a[3][4] = { 1,2,3,4, 5,6,7,8, 9,10,11,12, }; printf(“%u %u %u \n”, a[0]+1, *(a[0]+1), *(*(a+0)+1));

指向C中的字符串?

char *ptrChar; 我知道ptrChar是指向char的指针。 指向字符串的命令是什么? 编辑:如果它是相同的(ptr到char与ptr到字符串) – 下面的变量定义代表什么? char (*ptr)[N]; 我糊涂了。

char *赋值的分段错误

我试图在下面的程序中为位置* p =’Z’理解char *赋值的分段错误 void main() { char *p =”abcdefg”; *p = ‘Z’; } 当谷歌搜索时,我确实找到了许多答案的链接,如下所示1.这是一个字符串文字,一旦分配不能更改其值2.字符串文字不能分配给* p 3.取一个可以改变的malloc …和等…… 但我担心的是,如果字符串文字值不能改变,因为它是常量,当我们改变整数的常量值时,我们怎么不分段错误。 有人可以帮助我更好地理解这一点吗? -Prashanth

malloc结构指针数组与结构数组

有什么区别 struct mystruct *ptr = (struct test *)malloc(n*sizeof(struct test)); 和 struct mystruct **ptr = (struct test *)malloc(n*sizeof(struct test *)); 他们都工作正常,我只是好奇两者之间的实际差异。 第一个是否分配了一个结构数组,而第二个是结构指针数组? 另一种方式? 另外,哪一个占用内存较小?

“多维数组指针+1”的值不匹配

这是问题计划: #include int main() { int apricot[2][3][5]; int (*r)[5]=apricot[0]; int *t=apricot[0][0]; printf(“%p\n%p\n%p\n%p\n”,r,r+1,t,t+1); } 它的输出是: # ./a.out 0xbfa44000 0xbfa44014 0xbfa44000 0xbfa44004 我认为t的维度值应为5,因为t是最后一个维度,事实匹配(0xbfa44004-0xbfa44000 + 1 = 5) 但是r的维度值是0xbfa44014-0xbfa44000 + 1 = 21,我认为它应该是3 * 5 = 15 ,因为3和5是最后两个维度,那么为什么差异是21?

你什么时候能够返回NULL作为C函数的返回值?

我想知道你是否可以告诉我你什么时候能够返回NULL ,这是C中函数的结果。 例如, int lenght()不能返回NULL因为在return语句中需要一个int 。 但是函数struct node* find(int key) ,当使用链表时允许我返回NULL。

为什么指针变量没有显示100位数?

目标:我有精度要求我需要显示100位数字或至少50位数 尝试1:首先我使用整数变量然后它只显示10位数 尝试2:在我朋友的帮助下,我使用了指针概念,它成功地输入了50到100位,但指针变量只显示10位数 我写的程序是 #include #include main() { int *p; p=(int*)malloc(100*sizeof(int)); *p=1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890; printf(“%d”,*p); } 在执行上述程序时,我得到了垃圾值 提前致谢