“指向”存储在内存中的另一个值的数据类型。指针变量包含某个其他实体(变量或函数或其他实体)的内存地址。此标记应用于涉及指针使用的问题,而不是引用。使用指针的最常见编程语言是C,C ++,Go和汇编语言。使用特定语言标记。其他有用的标签是描述指针使用的方法,函数,结构等。
我们什么时候需要对C++中的指针使用“assert”,何时使用它们,它们最常见的实现方式是什么?
如何将 p[0] 传递给函数并打印其内容? #include“stdio.h” 无效 setupMidiOctave(int *p[]) { int a[] = {1, 2, 3}; int b[] = {4, 5, 6}; p[0] = &a[0]...
即使参数和结果具有相同类型,`fn` 的`TypeId` 也是不同的
具有相同参数和结果类型的两个 fn 类型的 TypeId 在非泛型函数与使用相同类型实例化的泛型函数中获取 TypeId 时有所不同: 在这个 Rust 程序中(
为什么在C语言中不能将char数组声明为“char* a”格式?
众所周知,数组名指向数组第一个元素的地址,但是为什么我们不能在C语言中将char数组声明为“char* a”格式? ..
我正在尝试设置一个整数指针数组。该程序应该将索引 i 处的指针设置为指向值 2*i 的整数。然后程序应该打印出 fi 的指针...
我尝试在代码中转换指针。但它引发了访问冲突。 我在网上尝试了很多方法,但都失败了。 主程序: createthread(nil,0,@make,@cli,0,tmp);//cli是一个
上下文:我仍在学习如何用 C++ 进行编码,并且我知道如果未初始化,变量将被分配垃圾值。 我想知道未初始化的指针会有什么值。 我很期待...
我正在做一个个人项目,它可以归结为一个任务管理命令行工具。这个想法是采用我在高级语言中使用的一些概念并将它们应用到 C++ 中,因为我们...
`constexpr`“编译时指针”在 C++ 中如何工作?
背景 指针不能用作模板(在编译时专门化)的 T* p 值参数,因为某些对象 T obj 的内存地址 &obj 仅在运行时才知道。
我想用双指针实现二维数组,并且我希望每个数组在内存空间中是连续的。所以每个数组之间应该有 20 个字节。但下面的代码给出了不同的结果......
我想将一个指向函数A的结构体的指针传递给函数B,该结构体在函数A中声明,这可能吗? 无效 func1() { 类型定义结构{ int x;...
我对指针及其使用有一定的了解,但我想到了一些使用指针转换的代码(我认为)我从未见过,我不确定我是否理解 该代码是一个 C 函数(为
我正在尝试在地图中插入对象,建议我使用指针,所以这是我的代码: #包括 #包括 #包括 类人 { 私人的: INT...
我最近在阅读C标准ISO/IEC 9899:2018规范。其中,第6.5.6节(加法运算符)描述了对+运算符的约束。规则[8]说: 当一个表达式...
如何创建指向 const uint8_t 数组的指针 const 数组?
我有几个不同长度的 const uint8_t 数组。我需要创建一个 const 数组,它有一个指向每个 const 的指针(最好还有一种自动计算另一个 const 的大小的方法...
#包括 #包括 #包括 #包括 整数 i,j; 无效display_matrix(int矩阵[],int行,int colombs){ 对于(i=0;i #include <stdio.h> #include <math.h> #include <time.h> #include <stdlib.h> int i,j; void display_matrix(int matrix[],int rows,int colombs){ for(i=0;i<rows;i++){ for(j=0;j<colombs;j++) printf("%5d ",matrix[i*rows+j]); printf("\n"); } } int *create_matrix(int rows,int colombs,int min,int max){ int *matrix=NULL; matrix=(int*)calloc(colombs*rows,sizeof(int)); for(i=0;i<rows;i++) for(j=0;j<colombs;j++) matrix[i*rows+j]=(rand()%(max-min+1))+min; return matrix; } int main(){ int *m=NULL,row,col; do{ printf("Give the number of rows:\n"); scanf("%d",&row); }while(row<=0); do{ printf("Give the number of colombs:\n"); scanf("%d",&col); }while(col<=0); m=create_matrix(row,col,10,99); display_matrix(m,row,col); return 0; } 矩阵按预期显示,但程序返回值为 3221226356。我尝试更改函数 create_matrix() 中的行和列,返回值为 0,但矩阵有垃圾数据。 您似乎使用的是 Windows。 在 Windows 上,错误代码 3221226356(十六进制为 0xc0000374)表示堆损坏。 损坏是由于在无效索引处访问您的matrix而引起的。 您的错误在于将行和列索引转换为 matrix 中的索引。 代替:i*rows+j 应该是:i*colombs+j 您在 2 个地方遇到此错误: 打印矩阵时(在display_matrix中): printf("%5d ",matrix[i*rows+j]); 当您填充矩阵时(在create_matrix中): matrix[i*rows+j]=(rand()%(max-min+1))+min; 旁注:colombs可能应该重命名为colomns。
Zig 将 std.os.argv 转换为 C 类型 argv
我有一个与c 库(xlib)集成的zig 项目。该库有一个方法,要求我将整个 argv 数组作为参数传递给它。在 zig extern 定义中,预期的类型...
我想我在某处读过,当使用指针并且我们想要将一个指针的内容复制到另一个指针时,有两个选项: 使用 memcpy 或 只需用 = 分配它们? 然而在洛...
据说当数组作为参数传递给函数时,它会衰减为指针,并且数组的长度也需要作为参数传递。这意味着原来的...
以下代码 #包括 int main() { 长长数据 = 0xFFFEABCD11112345; char *pData = (char *)&data; printf("地址 %p 处的值为 %x “,pData,*...